Я пытаюсь отправить INT значения, долгого значения, длинного массива и 2d двойных массива через сокет от клиента к серверу.Java Socket - Разбитая ошибка трубы
Я успешно отправлены Int, длинные значения и длинный массив, однако, когда речь идет о двойном массиве (output.writeObject (server_ind) - см на сторону клиента коды ниже), я получаю следующее сообщение об ошибке:
ОШИБКА:
java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
at java.net.SocketOutputStream.write(SocketOutputStream.java:159)
at java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1876)
at java.io.ObjectOutputStream$BlockDataOutputStream.writeByte(ObjectOutputStream.java:1914)
at java.io.ObjectOutputStream.writeFatalException(ObjectOutputStream.java:1575)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:350)
at clientSide.ClientSocket.connectionProtocol(ClientSocket.java:36)
at clientSide.clientMain.main(clientMain.java:97)
Мой код выглядит следующим образом:
стороне клиента:
Side ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream());
output.writeObject(num_doc); //int value
output.flush();
output.writeObject(num); //long value
output.flush();
output.writeObject(queryTDs); //long[] array
output.flush();
output.writeObject(server_ind); //double[][]
output.flush();
Сервер:
input = new ObjectInputStream(clientSocket.getInputStream());
num_doc = input.readInt();
num = input.readLong();
TDs = (long[]) input.readObject();
server_ind = (double[][]) input.readObject();
output = new ObjectOutputStream(clientSocket.getOutputStream());
output.writeObject("Received");
Спасибо!
Вы могли бы показать осмысленный код? Исключение составляет: clientSide.ClientSocket.connectionProtocol (ClientSocket.java:36) Но не находится в сообщении – efekctive
Как описано выше - «однако, когда дело доходит до двойного массива (output.writeObject (server_ind); код ниже) ", поэтому output.writeObject (server_ind); то есть 36-я строка, которая содержится в коде, извиниться, если ее недостаточно ясно. – Liutauras94
Что такое серверные журналы? Я предполагаю, что где-то рядом с строкой 'TDs = (long []) input.readObject();' исключение вашего кода. – user1516873