Я пытаюсь разработать приложение для передачи файлов на Java с апплетом в качестве клиента и отдельным приложением java в качестве сервера (на выделенной машине, размещенной в центре обработки данных).
Я использую DataOutputStream / DataInputStream для передачи данных с обеих сторон.
Когда я отправляю большие объемы данных, полоса пропускания очень изменчива: сначала все в порядке, затем поток tcp замораживается в течение 40-50 секунд, пока ничего не передается, а затем начинается снова.
Когда я смотрю на поток tcp с помощью Ethereal, я вижу дубликаты подтверждений, быстрые повторные передачи и повторные передачи tcp.
Но я не думаю, что проблема связана с Java: у меня та же проблема с передачей по FTP в FileZilla.
Но ... когда я пытаюсь передать данные с помощью netcat (клиент netcat + сервер netcat), все в порядке, полоса пропускания стабильна, потерянные tcp-пакеты, похоже, немедленно передаются без какой-либо паузы, независимо от объема передачи. 1003 *
Это как если бы Java не был настолько талантлив, как netcat, чтобы играть с потоками tcp ...
Я пытался играть с Socket.setSendBufferSize (), но я не увидел никакой разницы.
Есть идеи?
Спасибо!
И извините за мой плохой английский ...