strange socket behaviour

Joe Wong joewong at mango.cc
Wed Jun 2 04:37:21 CEST 2004


Hello,

 I have a short program that the client make a connection to server, a thread is then created to poll any data sent from the server. The main thread will close the socket after 5 seconds. Here are the code:

from socket import *
import select
import threading
import time

def poll(c):
    i, o, e = select.select([c], [], [])
    if not i:
        print "time out"
        return
    print i
    data = i[0].recv(1024)
    print "data: ", data

if __name__=="__main__":
    c = socket(AF_INET, SOCK_STREAM)
    c.connect(('192.168.100.74', 8888))
    th=threading.Thread(None, poll, "", (c, ))
    th.setDaemon(1)
    th.start()

    time.sleep(5)
    c.shutdown(2)
    c.close()
    th.join()
    print "completed"

On Windows, as soon as client socket 'c' is closed, the select() call returns. However, on Linux, the program seems blocking forever ( may be I am not patient to wait ). Is there anything wrong with my code?

Regards,

-- Wong
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20040602/62a745f3/attachment.html>


More information about the Python-list mailing list