comp.lang.ada
 help / color / mirror / Atom feed
From: Samuel Tardieu <sam@rfc1149.net>
Subject: Re: [OT] Two sockets questions
Date: Wed, 07 May 2003 20:22:52 +0200
Date: 2003-05-07T20:22:52+02:00	[thread overview]
Message-ID: <8765omaa6b.fsf@inf.enst.fr> (raw)
In-Reply-To: MPG.192368cf22f91f949896f7@News.CIS.DFN.DE

>>>>> "Jano" == Jano  <nono@celes.unizar.es> writes:

Jano> Is there a way of performing a connect without blocking on it? I
Jano> suspect not... and if not in Ada, by other means?

Sure! I'll describe the process in C, I do not know whether
GNAT.Sockets allows you to do all those steps:

  1) Create your socket
  2) Make it non-blocking
  3) connect() will return immediately with either 0 (success), -1
     with errno set to EINPROGRESS or -1 with another error (real
     error).
  4) If the result was -1/EINPROGRESS, do a select() on the socket for
     writing. When it tells you that you can write, write() 0 bytes. If
     there is no error (write() returns 0), then you are
     connected. Otherwise, you will get an error (typically
     -1/ENOTCONN).

Jano> Second: I have a connected socket which I poll periodically for
Jano> data. When there is no more data available and the other
Jano> endpoint has closed the socket, I continue receiving 0 byte
Jano> available but not notification of closed socket. It's only when
Jano> I try to read/write that a exception is raised about the
Jano> connection reset or something. Is there a mean to be aware that
Jano> connection has been closed (after the available data is
Jano> exhausted, I presume)?

If you select() the socket for reading and select() tells you that
there is data available and if read() returns 0 bytes, then this means
that the other side has shutdown its sending part.

  Sam
-- 
Samuel Tardieu -- sam@rfc1149.net -- http://www.rfc1149.net/sam



  reply	other threads:[~2003-05-07 18:22 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-05-07 18:03 [OT] Two sockets questions Jano
2003-05-07 18:22 ` Samuel Tardieu [this message]
2003-05-07 19:52   ` Stephen Leake
2003-05-07 20:08     ` David C. Hoos
2003-05-07 22:33     ` Jano
2003-05-08  9:10       ` Samuel Tardieu
2003-05-08 21:35         ` Jano
2003-05-09  8:14           ` Samuel Tardieu
2003-05-09 14:32             ` Jano
2003-05-10 14:06         ` Jano
2003-05-10 18:01           ` tmoran
2003-05-10 21:27             ` Samuel Tardieu
2003-05-11 18:01               ` tmoran
2003-05-08 17:48       ` Stephen Leake
2003-05-08 18:42         ` Samuel Tardieu
2003-05-08 21:41           ` Jano
2003-05-08 21:48           ` Jano
2003-05-08 22:35             ` tmoran
2003-05-09 14:42               ` Jano
2003-05-10  8:57                 ` Tarjei T. Jensen
2003-05-10 16:55                   ` Simon Wright
2003-05-11 18:23                   ` Tarjei T. Jensen
2003-05-11  2:05                 ` tmoran
2003-05-08 21:40         ` Jano
2003-05-07 20:02   ` Jano
2003-05-08  8:57     ` Samuel Tardieu
2003-05-08 21:39       ` Jano
2003-05-08 10:14   ` Preben Randhol
2003-05-08 11:09     ` Samuel Tardieu
2003-05-08 21:40       ` Jano
2003-05-09  8:19         ` Samuel Tardieu
2003-05-08 18:06     ` tmoran
2003-05-07 20:09 ` tmoran
replies disabled

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