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;