Java PrintWriter需要睡眠才能循环工作
我的应用程序中有一个简单的TCP/IP客户端,它使用Java PrintWriter需要睡眠才能循环工作,java,android,Java,Android,我的应用程序中有一个简单的TCP/IP客户端,它使用PrintWriter将数据写入套接字,当我通过GUI手动发送消息时,它工作正常,但当我循环时,它不工作 当调用fast时,打印机会自动中断吗 out.println(message); out.flush(); 编辑:不知何故,刷新速度不够快,因此客户端正在向服务器发送连接/多个字符串,而服务器无法处理它 没有合适的SSCCE,很难知道这里到底发生了什么。但我怀疑延迟的根本原因是TCP/IP堆栈和/或您的“网络” 您对每条消息的
PrintWriter
将数据写入套接字,当我通过GUI手动发送消息时,它工作正常,但当我循环时,它不工作
当调用fast时,打印机会自动中断吗
out.println(message);
out.flush();
编辑:不知何故,刷新速度不够快,因此客户端正在向服务器发送连接/多个字符串,而服务器无法处理它 没有合适的SSCCE,很难知道这里到底发生了什么。但我怀疑延迟的根本原因是TCP/IP堆栈和/或您的“网络” 您对每条消息的攻击性刷新可能会导致TCP堆栈发送大量小的网络数据包。这可能会导致暂时的网络拥塞和数据包丢失 如果这就是问题所在(正如我所说……我们不知道!),那么有两个可能有用的选择:
- 减少冲洗次数;e、 g.每0.25秒一次
- 正在调整平台的TCP/IP堆栈。。。虽然这在普通的应用程序中可能无法实现
调用fast时,
sendMessage
是否自行中断
out.println(message);
out.flush();
没有
我需要睡眠500秒才能让它发送所有信息
这很可能是不正确的/不准确的,但是如果没有看到您的实际代码,就无法解释实际发生的情况。您缺少了其余的代码和一个最小的测试用例。代码太大,无法在此处发布,但我想您已经回答了我的问题。因为代码正在刷新,没有错误。如果PrintWriter刷新无法自行中断,则一定是网络或服务器端错误,因此感谢您提供的信息。我还是发布了tcp代码。它只是包装在一个集装箱里。