我想實現一個TCP服務器,它不會在recv或sendall操作期間永遠掛起(潛在地)。實現一個非阻塞的TCP服務器
我認爲這將是足夠的指定活動的套接字超時,但是這似乎並沒有這樣的情況:see here
所以,我怎麼能延長我的代碼,以確保:
- 的recv將不會在任何情況下掛斷
- sendall在任何情況下將不會掛斷(好吧,我不知道如果sendall可以掛斷所有)
任何建議,非常感謝。
我想實現一個TCP服務器,它不會在recv或sendall操作期間永遠掛起(潛在地)。實現一個非阻塞的TCP服務器
我認爲這將是足夠的指定活動的套接字超時,但是這似乎並沒有這樣的情況:see here
所以,我怎麼能延長我的代碼,以確保:
- 的recv將不會在任何情況下掛斷
- sendall在任何情況下將不會掛斷(好吧,我不知道如果sendall可以掛斷所有)
任何建議,非常感謝。
你需要的是select
函數。 它需要3個參數;讀取列表,寫入列表,錯誤列表。 然後它返回三個值,每個值都是您輸入的套接字列表,這些套接字已準備好寫入,讀取。 (或者,如果你想檢查已出現錯誤。)
rl , wl , el = select([ serversocket , clientsocket ] , [] , []);
for e in rl:
if e == serversocket:
acceptConnection(serversocket);
else:
readFromClient(clientsocket);
看一看[扭曲](http://twistedmatrix.com/trac/) – User