All pastes #373880 Raw Edit

Stuff

public text v1 · immutable
#373880 ·published 2007-02-27 01:58 UTC
rendered paste body
with Ada.Text_IO;
with GNAT.Sockets;

procedure Server is
   
   package Text		renames Ada.Text_IO;
   package Socket	renames GNAT.Sockets;
   
   Server_Socket	: Socket.Socket_Type;
   Listening_Socket	: Socket.Socket_Type;
   Address		: Socket.Sock_Addr_Type;
   Channel		: Socket.Stream_Access;
   
begin
 
   Socket.Initialize;

   Address.Addr := Socket.Inet_Addr("127.0.0.1");
   Address.Port := 6059;

   Socket.Create_Socket(Server_Socket);
   Socket.Set_Socket_Option(Server_Socket, Socket.Socket_Level, (Socket.Reuse_Address, True));
   Socket.Bind_Socket(Server_Socket, Address);
   Socket.Listen_Socket(Server_Socket);
   Socket.Accept_Socket(Server_Socket, Listening_Socket, Address);
   
   Channel := Socket.Stream(Listening_Socket);
 
   Text.Put_Line("Listening...");

   loop
	declare
		Message : constant String := String'Input (Channel);
	begin
	      if Message = "quit" then
		 Text.Put_Line("Good bye...");
		 Exit;
	      else
		 Text.Put_Line(Message);
		 String'Output(Channel, "Message recieved.");
	      end if;
      end;
   end loop;
   
   Socket.Free(Channel);
   Socket.Close_Socket(Listening_Socket);
   Socket.Close_Socket(Server_Socket);
   Socket.Finalize;

end Server;