我有一个第三方软件应用程序的 tcpip 套接字接口。我已经为几个客户站点实现了这个接口,没有问题。最新的客户,虽然......问题。我们已经打开了两端应用程序的日志记录,并且还在 PC 上安装了 Wireshark 以记录原始 tcpip 流量。这样,我们已经证明我的服务器应用程序成功发送了消息,PC 收到了消息,但客户端应用程序看不到它。(这是一个完全间歇性的问题,这就是为什么要进行故障排除如此痛苦的原因。)
套接字细节非常简单:一个套接字处理服务器和 PC 之间的两种方式的通信。消息是纯 ascii 文本且相当短(不是 XML)。服务器通过发送第一条消息来启动通信,然后客户端用几条消息进行响应。在应用程序运行时,套接字始终保持打开状态。客户端应用程序旨在使最终用户一次只能处理一个案例,从而防止发生消息冲突。他们设置了某种轮询,他们的应用程序“休眠”,直到它看到来自服务器的启动消息。
第三方供应商建议我在向他们发送启动消息之前添加几秒钟的延迟。我看不出这有什么帮助。如果客户端正在“休眠”,只是轮询套接字等待消息,那么在第一条消息之前添加延迟有什么帮助?这并不是说我们发送了两条消息,而第二条却丢失了。它正在丢失第一条消息。所以我不明白如果我们现在或两秒后发送该消息有什么关系。
我问过他们,他们没有给我详细信息。他们可能不想向我透露他们编码中的一些专有细节,这是公平的。所以我在这里问是因为我一直在学习有关套接字编程的新东西。也许你们可以了解轮询 tcpip 套接字如何受到消息时间的影响?