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