with Ada.Characters.Latin_1, Ada.Command_Line, Ada.IO_Exceptions, Ada.Text_IO;

with GNAT.Sockets;
with EUP.Sockets;

procedure Remote_List is
   package Latin_1 renames Ada.Characters.Latin_1;
   Port : constant GNAT.Sockets.Port_Type := 15_000;
   Address : GNAT.Sockets.Sock_Addr_Type;
   Socket  : GNAT.Sockets.Socket_Type;
   Channel : GNAT.Sockets.Stream_Access;
begin
   Address := (Family => GNAT.Sockets.Family_Inet,
               Addr   => EUP.Sockets.To_IP_Address (Ada.Command_Line.Argument (1)),
               Port   => Port);

   Ada.Text_IO.Put_Line ("Connecting to " & GNAT.Sockets.Image (Address));

   GNAT.Sockets.Create_Socket (Socket);
   GNAT.Sockets.Set_Socket_Option (Socket,
                                   GNAT.Sockets.Socket_Level,
                                   (GNAT.Sockets.Reuse_Address, True));
   GNAT.Sockets.Connect_Socket (Socket, Address);

   Channel := GNAT.Sockets.Stream (Socket);
   String'Write (Channel,
                 Ada.Command_Line.Argument (2) & Latin_1.LF);

Copy_Socket_To_Output:
   begin
      loop
         Ada.Text_IO.Put (Character'Input (Channel));
      end loop;
   exception
      when Ada.IO_Exceptions.End_Error =>
         null;
      when others =>
         raise;
   end Copy_Socket_To_Output;

   GNAT.Sockets.Close_Socket (Socket);
end Remote_List;

