好的,在一些插槽和网络实验中,我已经建立了一个非常基本的聊天客户端/服务器,可以在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