我在python上使用asyncore.dispatcher客户端连接到在PC上运行的LabWindows中开发的服务器。这是连接到服务器的客户端上的代码片段:
class DETClient(asyncore.dispatcher):
def __init__(self, host, port):
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.connect((host,port))
在服务器端,我的Labwindows代码正在寻找两个参数TCPPeerName和TCPPeerAddr:
GetTCPPeerName (handle, peerName, sizeof (peerName));
GetTCPPeerAddr (handle, peerAddress, sizeof (peerAddress));
似乎python代码根本没有传递主机名,因为我的服务器为PeerName获取了NULL。
建立连接时,我是否需要做任何事情来专门使asyncore客户端发送PeerName?
建立连接时,我是否需要做任何事情来专门使asyncore客户端发送PeerName?
不,您不需要,因为TCP客户端在建立连接时不会发送名称。他们发送地址。
GetTCPPeerName
几乎可以肯定调用gethostbyaddr(X)
,其中X
的地址被返回GetTCPPeerAddr
。在您的情况下gethostbyaddr()
失败,因为该信息不可用。
这意味着您的主机名解析数据库缺少某些数据-您可能需要更新DNS,主机文件,WINS数据或主机名数据所在的任何位置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句