comp.lang.ada
 help / color / mirror / Atom feed
From: Simon Wright <simon@pushface.org>
Subject: Re: TCP Server & Client
Date: Sun, 25 Mar 2018 09:22:29 +0100
Date: 2018-03-25T09:22:29+01:00	[thread overview]
Message-ID: <ly8tagfttm.fsf@pushface.org> (raw)
In-Reply-To: 64541efa-41ea-464b-bb60-06719f3c56ad@googlegroups.com

Andrew Shvets <andrew.shvets@gmail.com> writes:

> procedure TCP_Client is
[...]
>   GNAT.Sockets.Create_Socket(Socket, GNAT.Sockets.Family_Inet, GNAT.Sockets.Socket_Stream);

>   GNAT.Sockets.Set_Socket_Option(Socket, GNAT.Sockets.Socket_Level, (GNAT.Sockets.Reuse_Address, True));

>   GNAT.Sockets.Send_Socket(Socket, Data, Last, Address);

If you look at the spec of GNAT.Sockets for a long time you will see
that there are 3 versions of Send_Socket, only 2 of which I would expect
to use, and you've chosen the wrong one (the last, datagram,
version). You need the second:

   procedure Send_Socket
     (Socket : Socket_Type;
      Item   : Ada.Streams.Stream_Element_Array;
      Last   : out Ada.Streams.Stream_Element_Offset;
      Flags  : Request_Flag_Type := No_Request_Flag);

More importantly, you've left out the Connect_Socket call (which is what
the server Accept_Socket call is waiting for).

Check out the commentary at the beginning of g-socket.ads, look for
'task body ping'.


Also, in TCP_Server, you should be calling Receive_Socket on Sock (the
new socket which is actually connected to TCP_Client).


  reply	other threads:[~2018-03-25  8:22 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-25  4:04 TCP Server & Client Andrew Shvets
2018-03-25  8:22 ` Simon Wright [this message]
2018-03-25 19:17   ` Andrew Shvets
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox