J
Joe Wong
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
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