[EMAIL PROTECTED] writes on 10 Jul 2006 08:42:11 -0700: > I've tried to RTFM this and am having no luck. First off, I am using > Mac OSX 10.4.7 with python 2.4.2 from fink. I am trying to connect to > a server that should be rejecting connections and I was surprised when > it did not throw an exception or do something otherwise equally nasty. > It just connects and never returns any data. First, the proof that > something is there and rejecting the connection (or is it that this > thing actually accepts the connection and then drops it?)... > > telnet localhost 31414 > Trying 127.0.0.1... > Connected to localhost. > Escape character is '^]'. > Connection closed by foreign host.
What you see here is that the connection was opened successfully (the connect succeeded) and then closed again. > ... > In [1]: import socket, select > > In [2]: remote = socket.socket(socket.AF_INET,socket.SOCK_STREAM) > > In [3]: remote.connect(('localhost',31414)) > > In [4]: remote.recv(200) > Out[4]: '' The means, that you see the same in Python: "recv" returning an empty string indicates that the connection was closed. > > In [5]: r,w,e=select.select([remote],[remote],[remote],1) > > In [6]: print r,w,e > [<socket._socketobject object at 0x7e48d0>] [<socket._socketobject > object at 0x7e48d0>] [] I have seen something similar recently: I can write ("send" to be precise) to a socket closed by the foreign partner without error (but of course, the written data does not arrive at the remote side). Only the second "send" raises an exception. I expect this is a TCP bug. -- Dieter -- http://mail.python.org/mailman/listinfo/python-list