[java] Передача данных через Socket
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at java.io.DataInputStream.readUnsignedShort(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
java.io.EOFException
at java.io.DataInputStream.readUnsignedShort(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
client.setTcpNoDelay(true);Сейчас нет при себе документации, но если в этой строке ты делаешь неблокирующий сокет, то у тебя возникает исключение по причине того, что программа не успевает отослать данные по сети и запись в сокет должна вызывать блокирование.
TcpNoDelay это совсем не означает неблокирующийся сокет.
Угу, уже прочитал документацию. Тогда может быть всё, что угодно. Вплоть до NullPointerException на стороне клиента.
Оставить комментарий
koly
Возникают ошибки при передаче данных через сокеты.Программа - это клиент-серверное приложение. Клиент пытается подключиться к серверу и скачать патч. Сервер соответственно принимает соединения и обслуживает клиентов.
Клиент:
Сервер:
Ошибки со стороны сервера:
Какие ошибки соответствуют этим на стороне клиента - не знаю.
Частота возникновения ошибок зависит от удаленности компьютеров внутри локальной сети (возможно, скорости передачи данных) и от размера передаваемых данных. В сети ГЗ ошибки появляются в половине попыток переслать файл 14MB. Ошибки возникают только при связи с определенными хостами клиентов. (т. е. если один раз связался и передал файл, то и в следующий раз проблем не будет - и наоборот)
В чем могут быть проблемы? Неправильные настройки или дефекты реализации сокетов?