rendered paste bodywith 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;