Skip to main content
 首页 » 编程设计

python之py2exe 之后与 Twisted 的不一致连接失败

2025年05月04日9soundcode

这是我的第一个问题,请放轻松。

这是我的情况:

我正在使用 Twisted 框架在 Python 中创建一个网络游戏。游戏通过一个端口上的 TCP 连接到主服务器(连接保持事件状态以进行身份​​验证),然后您可以在另一个端口上加入网络服务器。目前网络和主服务器程序都在同一台远程机器上运行。

到目前为止,几乎一切都运行良好,至少在通过 Python 解释器运行游戏时是这样。在这种情况下,连接到两台服务器总是可以正常工作。该问题仅在使用 py2exe 为客户端创建独立可执行文件后才出现。

在我的开发机器上,运行可执行文件将允许我启动游戏、连接到主服务器并使用它进行身份验证。 Wireshark 告诉我连接保持事件状态并且定期轮询正在确认。到目前为止,一切都很好。但是当我尝试连接到网络游戏服务器时(相邻端口上的第二个 TCP 连接),结果不一致。大约百分之一会起作用。其余时间在什么都不做(Twisted 不触发任何回调)或返回“用户超时导致连接失败”之间大约占 50/50。半秒内出错。

有趣的是,对于这些失败的连接“尝试”,Wireshark 甚至不显示任何传出的 TCP 数据包,无论它们是返回错误还是什么都不做。

然后它变得更奇怪了,因为当我在我的另一台测试机器上运行完全相同的游戏客户端可执行文件时,一切正常。那里没有任何连接问题,它每次都能正常工作。两台机器都运行原始 Windows 7,开发机器是专业版,另一台是家庭版。

我还应该指出,在本地运行游戏服务器,即使在与客户端相同的机器上(连接到“localhost”)也对这个问题没有影响 - 症状保持不变。

那么这里可能发生了什么?

请您参考如下方法:

这听起来像是 Windows 网络堆栈的问题。您是否安装了故意破坏网络的东西,例如 AVG antivirus ?如果有,则您的网络可能已损坏 :)。