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
next prev parent 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