我一直试图将此错误修复3天,直到现在我都无法解决。 我做了一个简单的服务器,可以处理多个客户端,一切正常。现在我尝试使用代码并使用一些UI(使用Tkinter)并且我没有成功。
以下代码挂起在select.select函数上。
我猜测问题出在客户端代码中,这是客户端代码:
class OtherFrame(Tk.Toplevel, HandleScreens.HandleScreens):
def __init__(self):
print 'Classsd'
Tk.Toplevel.__init__(self)
self.root = self
self.root.geometry('800x450+350+150')
self.root["bg"] = "#3498db"
self.root.title('My Project')
self.protocol('WM_DELETE_WINDOW', self.doSomething)
client_socket = socket.socket()
port = 3548
host = '0.0.0.0'
client_socket.connect((host, port))
print 'Connected to the server'
while True:
sockets_list = [sys.stdin, client_socket]
rlist, wlist, xlist = select.select(sockets_list, [], [])
for curr_sock in rlist:
if curr_sock == client_socket:
data = curr_sock.recv(1024)
if not data:
print '\nDisconnected from server'
sys.exit()
else:
pass
else:
client_data = ''
client_socket.send(client_data)
此代码只是挂起。它什么都不做。我希望有人知道我需要改变什么。
非常感谢,对不起我的英语很差。
答案 0 :(得分:0)
因为那个while循环你永远不会结束。如果我是你,我会将当前在while循环中的所有内容放在一个新的定义中,然后在定义代码的末尾写self.root.after(10, <new def name>)
。这将阻止您的代码阻止tkinter,从而阻止整个程序。