how to know if socket is still connected

Cameron Laird claird at lairds.us
Mon Jul 17 09:57:04 EDT 2006


In article <12blgl1t9egsqb8 at corp.supernews.com>,
Grant Edwards  <grante at visi.com> wrote:
>On 2006-07-16, nephish at xit.net <nephish at xit.net> wrote:
>
>> serverhost = 'xxx.xxx.xxx.xxx'
>> serverport = 9520
>> aeris_sockobj = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>> aeris_sockobj.connect((serverhost,serverport))
>>
>> while 1:
>>     do this or that with socket,
>>     send and receive info.
>>     yadda yadda yadda
>>
>> 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.



More information about the Python-list mailing list