如何使用ADA进行网络编程?

如何使用ADA进行网络编程? 我希望在GNAT3.12P中写服务器与客户端,请指教.

TCP

with Gnat.Sockets;
use Gnat.Sockets;
with Ada.Text_Io;
with System;
use System;
with Gnat.Threads;
use Gnat.Threads;
pragma Warnings(Off);
with System.Tasking;
use System.Tasking;
with System.Address_To_Access_Conversions;

with Gnat.Io;
use Gnat.Io;

procedure Server_Threads is

   type Thread_Array is array (1 .. 10) of Task_Id;
   Thread : Thread_Array;

   type Saddr is array (1 .. 10) of System.Address;
   Sa : Saddr;

   offset:integer range 0..1000;

   procedure Server is
      Address : Sock_Addr_Type;
      Server  : Socket_Type;
      Socket  : Socket_Type;
      Channel : Stream_Access;

      A : Integer := 1;
      

   begin
      Initialize (Process_Blocking_Io => False);
      
      Address.Addr := Inet_Addr("192.168.1.102") ;

      Address.Port:=2000+port_type(offset);
      
      put(integer(address.port));
      
      Create_Socket(Server);

      Set_Socket_Option
         (Server,
         Socket_Level,
         (Reuse_Address, True));

      Bind_Socket (Server, Address);

      Listen_Socket (Server);

      Accept_Socket (Server, Socket, Address);

      Channel := Stream (Socket);

      delay 1.0;
      <<Loop_Rec>>
         Ada.Text_Io.Put_Line(String'Input(Channel));
      String'Output(Channel,"Hello,have recied your message!" & Integer'
         Image(A));
      A:=A+1;
      delay 1.0;
      goto Loop_Rec;

      Close_Socket(Server);

      Close_Socket(Socket);
   end Server;

begin
   for I in 1..10 loop
   
      offset:=I;
      Thread(I):=To_Task_Id(Create_Thread(Server'Address,null,0,1));
   end loop;

end Server_Threads;