Python' asynchat'聊天服务器 - 让客户端等到服务器启动

时间:2014-06-05 11:11:45

标签: python asyncore

我在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,从而破坏我的循环。然而,这不会发生。

有人知道为什么吗?而且,如果这种方法错了,我们如何让聊天客户端等待服务器?

我是这些东西的新手,所以请解释一下,记住我是新手:)

1 个答案:

答案 0 :(得分:0)

我想我的机器已经疯了一段时间但我的代码工作了:) 我能够启动2台客户机,然后启动服务器并完成任务。

最好的感觉! :)