socket-module: different behaviour on windows / unix when a timeout is set

Mirko Vogt lists at nanl.de
Fri Jul 11 07:50:44 EDT 2008


Gabriel Genellina wrote:
> En Wed, 09 Jul 2008 15:02:56 -0300, Mirko Vogt <lists at nanl.de> escribi�:
> 
>> it seems that the socket-module behaves differently on unix / windows
>> when a timeout is set.
> [...]
>> Now I will change the code slightly - to be precise I set a timeout on
>> the socket:
>>
>>
>> # test.py
>>
>> import socket
>> sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
>> sock.settimeout(3.0) #  <-----
>> print 'trying to connect...'
>> sock.connect(('127.0.0.1',9999))
>> print 'connected!'
>>
>>
>> # executed on linux
>>
>> $ python test.py
>> trying to connect...
>> Traceback (most recent call last):
>>   File "test.py", line 5, in <module>
>>     sock.connect(('127.0.0.1',9999))
>>   File "<string>", line 1, in connect
>> socket.error: (111, 'Connection refused')
>> $
>>
>>
>> # executed on windows
>>
>>> C:\Python25\python.exe test.py
>> trying to connect...
>> connected!
> 
> Which Python version? Which Windows version? I've tried 2.3.4, 2.4.4,
> 2.5.1 and 3.0a4, all on WinXP SP2, and in all cases I got an exception
> (details differ between versions). In no case I could make the
> connection succeed when nobody was listening at port 9999, as expected.
> 

Hey, this is strange.

Linux:
$ python --version
Python 2.5.2
$

Windows:
C:\Python25>python.exe --version
Python 2.5.2
C:\Python25>

Mirko



More information about the Python-list mailing list