我在python中使用asynchat模块创建了一个简单的聊天服务器。我的目的是让聊天客户端等待服务器启动并运行。
我尝试使用handle_connect_event来设置连接到True,如:
def handle_connect_event(self):
self.connected = True
然后我循环连接命令,直到连接变为True:
while not self.connected:
try:
self.connect((host, port))
except:
time.sleep(1)
我在asyncore调度程序代码中读到,当连接成功时,会调用handle_connect_event:
def connect(self, address):
self.connected = False
err = self.socket.connect_ex(address)
# XXX Should interpret Winsock return values
if err in (EINPROGRESS, EALREADY, EWOULDBLOCK):
return
if err in (0, EISCONN):
self.addr = address
self.handle_connect_event()
else:
raise socket.error(err, errorcode[err])
所以我相信在创建连接时,应该触发handle_connect_event中的代码,从而设置连接到True,从而破坏我的循环。然而,这不会发生。
有人知道为什么吗?而且,如果这种方法错了,我们如何让聊天客户端等待服务器?
我是这些东西的新手,所以请解释一下,记住我是新手:)
答案 0 :(得分:0)
我想我的机器已经疯了一段时间但我的代码工作了:) 我能够启动2台客户机,然后启动服务器并完成任务。
最好的感觉! :)