Я программирую приложение сервера (Java) - клиента (Android / Java).Сервер W7.Все взаимодействие идет хорошо до тех пор, пока одно клиентское чтение не замерзнет и не прекратит чтение данных, пока я не отправлю его в 2 раза больше.
Данные, не прочитанные, являются байтовым массивом.Я повторяю, что до этого момента все взаимодействие идет хорошо.
Вот код, который я использую для отправки данных:
Long lLength = new Long(length);
byte [] bLength = this.longToBytes(lLength.longValue());
dos.write(bLength);
dos.flush();
dos.write(bLength);
dos.flush();
dos.write(bLength);
dos.flush();
Этот код преобразует длинное значение в массив из 8 байтов.Как я уже сказал, когда выполняется первая запись (а клиент ожидает данные), чтение не выполняется.Это не будет сделано до тех пор, пока я не выполню последнюю запись ().
А вот код для его чтения:
byte length[] = {0,0,0,0,0,0,0,0};
dis.read(length);
Я использовал Wireshark, чтобы прослушивать трафик, и я могу видетьчто байтовый массив отправляется, и клиент отвечает ACK, но чтение не выполняется.
В клиенте и на сервере сокеты настроены следующим образом:
socket = new Socket(sIP, oiPort.intValue());
dos = new DataOutputStream(socket.getOutputStream());
dis = new DataInputStream(socket.getInputStream());
Это сводит меня с ума ... Я не знаю, почему в какой-то момент приложение перестает читать данные, когда я отправляю их так же, как всегда.
Я полагаю, что проблема может бытьво входных буферах клиентского сокета ... Но я не знаю, что делать или что попробовать ...
Скажите, что я также тестировал сервер в WXPSP3, и он все еще не 'т работа.