好的,在一些插槽和網絡實驗中,我已經建立了一個非常基本的聊天客戶端/服務器,可以在Unix上無縫運行。現在我在翻譯win32時遇到了一些錯誤。在前言中,我明白Windows上的select.select()不會接受套接字對象,並且(我認爲)通過不傳遞套接字對象而是套接字號來補償連貫性。然而,腳本仍然掛在select.select()函數上,我不知道爲什麼。該腳本只會掛起,直到服務器收到一條消息,之後它允許客戶端發送消息,但無論如何,客戶端都無法從服務器接收消息。我試圖儘可能地排除這兩個錯誤,但是我的研究已經變得乾燥起來。這裏是問題代碼,預先感謝。Windows上select.select()的問題
while True:
socket_list.append(s)
read_sockets, write_sockets, error_sockets = select.select(socket_list, [], [], 20)
if not (read_sockets or write_sockets or error_sockets):
if afk == False:
s.send('[Status]: '+str(_user)+' has gone afk.\n')
sys.stdout.write('\n[+]: You have gone afk.\n')
afk = True
prompt()
for sock in read_sockets:
print ('Starting for sock in read_sockets') #DEBUG#
if sock == s:
print ('Getting here.') #DEBUG#
data = sock.recv(4096)
if not data:
sys.stdout.write('[!]: Disconnected from chat server by server.\n'+W)
choice = raw_input('[*]: Press Enter to continue.')
_logic()
else:
sys.stdout.write(data)
else:
# Rest of the Program (Runs correctly) #
你見過http://twistedmatrix.com/嗎? – 2013-08-30 01:05:27