我的第一个问题,所以请放轻松。
这是我的情况:
我正在使用Twisted框架在Python中创建一个联网游戏。游戏在一个端口上通过TCP连接到主服务器(连接保持活动状态以进行身份验证),然后您可以在另一个端口上加入网络服务器。目前,网络和主服务器程序都在同一台远程计算机上运行。
到目前为止,几乎所有事情都很有效,至少在通过Python解释器运行游戏时。在这种情况下,连接到两台服务器总能正常工作。该问题仅在使用py2exe为客户端创建独立可执行文件后开始。
在我的开发机器上,运行可执行文件将允许我启动游戏,连接到主服务器并使用它进行身份验证。 Wireshark告诉我,连接保持活跃,并且正在进行定期民意调查。到现在为止还挺好。但是当我尝试连接到网络游戏服务器(相邻端口上的第二个TCP连接)时,结果是不一致的。大约一百次它会起作用。其余的时间大约是50/50之间什么都不做(Twisted不会触发任何回调),或者返回“用户超时导致连接失败”。半秒钟内出错。
有趣的是,Wireshark甚至没有为这些失败的连接“尝试”显示任何传出的TCP数据包,无论它们是返回错误还是什么都不做。
然后它变得更加怪异,因为当我在其他测试机上运行完全相同的游戏客户端可执行文件时,一切正常。没有任何连接问题,它只是每次都有效。两台机器都运行原始的Windows 7,开发机器是专业版,另一台是Home Edition。
我还应该指出,在本地运行游戏服务器,即使在与客户端相同的机器上(连接到“localhost”)也没有影响这个问题 - 症状保持不变。
那么可能会发生什么?