Java로 파일 전송 애플리케이션을 개발하려고합니다. 애플릿은 클라이언트로, 독립형 Java 애플리케이션은 서버로 (데이터 센터에서 호스트되는 전용 머신에서) 개발하려고합니다. DataOutputStream/DataInputStream을 사용하여 양쪽에서 데이터를 전송합니다. 대용량의 데이터를 전송할 때 대역폭은 매우 다양합니다. 모두 괜찮습니다. 그런 다음 전송되는 동안 TCP 스트림이 40-50 초 동안 정지 된 후 다시 시작됩니다.자바 소켓과 TCP 튜닝
Ethereal을 사용하여 TCP 스트림을 보면 복제 재발견, 빠른 재전송 및 TCP 재전송을 볼 수 있습니다. 하지만 문제는 Java에서 발생한 것이라고 생각하지 않습니다. FileZilla에서 FTP 전송과 동일한 문제가 있습니다. 하지만 ... netcat (netcat 클라이언트 + netcat 서버)을 사용하여 데이터를 전송하려고하면 대역폭이 안정적이며 tcp 손실 패킷은 전송 된 볼륨에 관계없이 일시 중지없이 즉시 재전송 된 것으로 보입니다.
그것은
나는 Socket.setSendBufferSize()를 재생하려고하지만, 나는 어떤 차이를 보지 못했어요 ... 자바의 TCP 스트림을 재생할 netcat을만큼 재능이 아니었다면 같아요. 아이디어가 있으십니까?감사합니다. 그리고 나쁜 영어에 대해 유감스럽게 생각합니다.
dup : http://stackoverflow.com/questions/1169739/java-tcp-socket-data-transfer-is-sloooooow – amischiefr