how to know if socket is still connected

nephish at xit.net nephish at xit.net
Mon Jul 17 14:01:15 EDT 2006


hey there, i have a question about this solution.
if i have a
message = socket.recv()
in the script, and the socket connection drops, will the
socket.recv() just wait forever for something to come across
the internet port? or will it know if the connection is dropped?
thanks.
-sk


Grant Edwards wrote:
> On 2006-07-17, Cameron Laird <claird at lairds.us> wrote:
>
> >>> works well, but sometimes the server drops the connection. so,
> >>> what i need is something that will let me know if the
> >>> connection is still ok, if not will reconnect.
> >>
> >>If the server has closed the connection, then a recv() on the
> >>socket will return an empty string "", and a send() on the
> >>socket will raise an exception.
> >>
> >>> what i thought, since it only lets you connect on a certain
> >>> port one at a time, that i could use a try-except to connect
> >>> every time, if it could not connect (because it already is)
> >>> then i would just continue on. But if it is not connected, it
> >>> would reconnect. that is what brings me here. Seems like it
> >>> would work, but is there a better way?
> >>
> >>I don't see why the normal send() and recv() semantics aren't
> >>sufficient.
> > 			.
> > 			.
> > 			.
> > Often normal send() and recv() semantics have been mistaught.
> > An alert alien, looking at other common APIs in isolation,
> > might reasonably wonder whether there is some sort of
> > still_ok_to_use() sort of check as part of TCP.  As it happens,
> > of course, that doesn't fit with the rest of socket networking,
> > which takes the "modernist" approach of trying send() or recv(),
> > and reporting any exception.
>
> On most Unices there are some obscure API features that can be
> used to generate a SIGPIPE under some vaguely specified error
> conditions (e.g. TCP keepalive timeout).  I've only read about
> them and never tried to use them, since I couldn't see anything
> in the description of the features that was any benefit over
> the nomral send() and recv() usage.
>
> --
> Grant Edwards                   grante             Yow!  Xerox your lunch
>                                   at               and file it under "sex
>                                visi.com            offenders"!




More information about the Python-list mailing list