All pastes #276180 Raw Edit

Miscellany

public text v1 · immutable
·published 2006-12-12 02:12 UTC
rendered paste body
with Ada.Exceptions;
with Ada.Text_IO;
with GNAT.Sockets;

procedure Main is
	use Ada.Exceptions;
	use Ada.Text_IO;
	use GNAT.Sockets;

	Server_Host : constant String := "localhost";
	Server_Port : constant Port_Type := 8080;

	Server_Address : Sock_Addr_Type;
	Server_Socket : Socket_Type;

	Client_Socket : Socket_Type;
	Client_Stream : Stream_Access;
begin
	Initialize;
	Put_Line ( "Host Name : " & Host_Name );
	Server_Address.Addr := Addresses ( Get_Host_By_Name ( Host_Name ), 1 );
	Server_Address.Port := Server_Port;
	Put_Line ( "Address : " & Image ( Server_Address ) );

	begin--<
		Create_Socket ( Server_Socket );
	exception
		when E : others =>
			Put_Line ( "*** " & Exception_Message ( E ) & " - Create Socket Error" );
	end;-->

	begin
		Set_Socket_Option ( Server_Socket, IP_Protocol_For_TCP_Level, ( Reuse_Address, True ) );
	exception
		when E : others =>
			Put_Line ( "*** " & Exception_Message ( E ) & " - Set Socket Option Error" );
	end;

	begin
		Put_Line ( "Binding..." );
		Bind_Socket ( Server_Socket, Server_Address );
	exception
		when E : Socket_Error =>
			Put_Line ( "*** " & Exception_Message ( E ) & " - Binding Error." );
	end;

	begin
		Put_Line ( "Accepting..." );
		Accept_Socket ( Server_Socket, Client_Socket, Server_Address );
	exception
		when E : Socket_Error =>
			Put_Line ( "*** " & Exception_Message ( E ) & " - Accept Error." );
	end;

	Client_Stream := Stream ( Client_Socket );
	Put_Line ( "Streaming..." );

	Put_Line ( "Reading Channel..." );

	declare
		Message : String := String'Input ( Client_Stream );
	begin
		Put_Line ( Message );
	exception
		when End_Error =>
			Put_Line ( "End Error." );
	end;

	Close_Socket ( Server_Socket );
	Close_Socket ( Client_Socket );

end Main;