【发布时间】:2009-09-22 02:50:40
【问题描述】:
我尝试用 Java 开发一个文件传输应用程序,其中一个小程序作为客户端,一个独立的 Java 应用程序作为服务器(在托管在数据中心的专用机器上)。 我使用 DataOutputStream/DataInputStream 来传输双方的数据。 当我发送大量数据时,带宽变化很大:首先一切正常,然后在 40-50 秒内冻结 tcp 流而没有任何传输,然后重新开始。
当我使用 Ethereal 查看 tcp 流时,我看到重复的确认、快速重传和 tcp 重传。 但我不认为问题源于 Java:我在 FileZilla 中的 FTP 传输也有同样的问题。 但是......当我尝试使用netcat(netcat客户端+netcat服务器)传输数据时,一切都很好,带宽稳定,tcp丢失的数据包似乎立即重新传输,没有任何暂停,无论传输的量如何。
这就像 Java 在玩 tcp 流方面没有 netcat 那样有天赋......
我尝试使用 Socket.setSendBufferSize(),但没有发现任何区别。 有什么想法吗?
谢谢! 对不起我的英语不好......
【问题讨论】:
标签: java tcp sockets stream netcat