gpt4 book ai didi

Java 套接字和 TCP 调整

转载 作者:可可西里 更新时间:2023-11-01 02:43:12 25 4
gpt4 key购买 nike

我尝试用 Java 开发文件传输应用程序,将小程序作为客户端,将独立的 Java 应用程序作为服务器(在数据中心托管的专用机器上)。我使用 DataOutputStream/DataInputStream 来传输双方的数据。当我发送大量数据时,带宽变化很大:首先一切正常,然后 TCP 流在 40-50 秒内卡住,没有任何传输,然后再次开始。

当我使用 Ethereal 查看 tcp 流时,我看到重复的 ack、快速重传和 tcp 重传。但我不认为问题出在 Java 中:我在 FileZilla 中使用 FTP 传输时遇到了同样的问题。但是...当我尝试使用 netcat(netcat 客户端 + netcat 服务器)传输数据时,一切都很好,带宽稳定,tcp 丢失的数据包似乎立即重新传输,没有任何暂停,无论传输量如何。

就好像如果Java没有netcat那么能玩tcp流...

我尝试使用 Socket.setSendBufferSize(),但没有发现任何区别。有什么想法吗?

谢谢!对不起我的英语不好......

最佳答案

mischiefr 先生是对的!这与另一个线程上的问题相同。通过用 BufferedXXXputstream 替换 DataXXXputStream 解决了我的问题。write(byte[], off, len) 方法是相同的,文档没有讨论这种不同的行为。 DataOutputStream 是缓冲的,BufferedOutputStream 也是,但第二个做得更好。谢谢!

关于Java 套接字和 TCP 调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1455591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com