我编写了一个套接字服务器,它使用Socket类与我的actionscript 3 flash游戏进行通信.这是一个TCP连接,我认为这意味着它100%确定服务器将接收发送消息,因为这是低级别的.因此,如果它无法发送,它将重新发送消息.
这对我和其他两个人来说似乎都是这样,我已经测试了我的构建.然而,对于一个人,有时(罕见但不可忽略),服务器不接收该消息,即使这对其他人的系统似乎没有发生.然而,这个人从来没有遇到任何其他专业多人游戏的问题,这意味着它必须是我的构建问题.
有什么我可以做的,以确保正确发送消息,我错误的TCP 100%安全,因为消息应该在故障低级别重新发送?
你是对的,这是一个常见的问题,但问题是一般的,独立于闪存. 我发了一条消息但是从未收到过,我该怎么办? 您需要检查您的客户端代码是否真的发送了消息; 你需要检查消息是否离开了客户端机器; 你需要检查消息是否到达服务器机器; 并且您需要检查服务器应用程序是否收到了消息.您还需要确保客户端和服务器之间的连接/套接字仍然存在.
在尝试诊断此问题时,假设TCP失败是错误的起点. 如果您正在使用UDP,那么故事就不同了,因为UDP不保证交付(但您已经知道了,对吧?).
重复以前的建议,您应该使用Wireshark(或等效的)来确定消息是否离开客户端计算机.你可以从你的服务器开始,以确保那里没有任何有趣的事情发生; 但是,如果服务器端确实没有消息的痕迹,那么您需要提供某种客户端检测,以查看那里发生了什么.