-2

我的应用程序中有一个简单的 TCP/IP 客户端,它使用 a 将数据写入套接字PrintWriter,当我通过 GUI 手动发送消息时它可以正常工作,但是当我循环时它不起作用。

A PrintWriter 在快速调用时会自行中断吗?

   out.println(message);
   out.flush();

编辑:不知何故,刷新速度不够快,因此客户端正在向服务器发送连接/多个字符串,而服务器无法处理它。

4

1 回答 1

1

如果没有适当的 SSCCE,就很难知道这里到底发生了什么。但我怀疑延迟的根本原因在于 TCP/IP 堆栈和/或您的“网络”。

您对每条消息的激进刷新可能会导致 TCP 堆栈发送大量小型网络数据包。这可能会导致暂时的网络拥塞和数据包丢失。

如果这是问题所在(正如我所说......我们无法判断!)那么两个可能有帮助的选项是:

  • 不那么频繁地冲洗;例如每 0.25 秒一次。
  • 调整平台的 TCP/IP 堆栈……尽管这可能无法在普通应用程序中完成。

sendMessage快速调用时会自行中断吗?

没有。

我需要休眠 500 毫秒才能让它发送所有消息。

这很可能也是不正确/不准确的,但是如果没有看到您的实际代码,就无法解释实际发生的事情。

于 2013-11-09T00:36:37.320 回答