with Ada.Command_Line, Ada.Streams;

with EUP.Sockets, EUP.Text_IO, GNAT.Sockets, Stream_Shortcuts;

procedure Datagram_Sender is
   use type Ada.Streams.Stream_Element_Offset;

   Socket : GNAT.Sockets.Socket_Type;
   Last   : Ada.Streams.Stream_Element_Offset;
begin
   if Ada.Command_Line.Argument_Count /= 3 then
      EUP.Text_IO.Put_Line (File => EUP.Text_IO.Standard_Error,
                            Item => "usage: " & Ada.Command_Line.Command_Name &
                                    " host port 'message'");
      Ada.Command_Line.Set_Exit_Status (Ada.Command_Line.Failure);
      return;
   end if;

   GNAT.Sockets.Create_Socket (Socket => Socket,
                               Mode   => GNAT.Sockets.Socket_Datagram);

   GNAT.Sockets.Send_Socket
     (Socket => Socket,
      Item   => Stream_Shortcuts.To_Stream (Ada.Command_Line.Argument (3)),
      Last   => Last,
      To     => (Family => GNAT.Sockets.Family_Inet,
                 Addr   => EUP.Sockets.To_IP_Address
                             (Ada.Command_Line.Argument (1)),
                 Port   => GNAT.Sockets.Port_Type'Value
                             (Ada.Command_Line.Argument (2))));
end Datagram_Sender;

