从读取asyncore
documentation,似乎handle_connect()
应成功连接到侦听套接字后调用,即TCP握手完成后应调用。但在实践中,看起来asyncore
不运行handle_connect()
,除非它在套接字上接收或发送数据包。Asyncore未运行handle_connect()
举个例子:
我有服务器套接字绑定和监听某个端口上。套接字将接受任何传入的连接,打印接收到的内容,并发回“谢谢”。
然后我开始一个asyncore.dispatcher
基于客户端,创建时谁连接到服务器套接字。客户端有一个方法handle_connect()
向服务器发送“hello”数据包。它还具有打印接收到的数据包的方法读取。 (在这种情况下,它应该打印“谢谢”)
当这个客户端运行时,连接被创建,TCP握手成功,服务器能够接受连接,但没有其他事情发生。永远不会调用handle_connect()
。
使异步运行handle_connect()
的唯一方法是如果服务器通过发送数据包开始,或者如果我发送数据包到服务器的__init()__
函数。然后handle_connect()
工程,一切工作正常。
这是事情应该如何工作?如果是这样,为什么?或者这只是一个错误,因为asyncore
被写入而没有更正?
有没有其他办法可以解决这个问题?