Как отправить сериализованные данные через TCP-соединение в Java - PullRequest
1 голос
/ 18 февраля 2011

Я хочу отправить данные, которые я сериализовал через TCP-соединение.Я создал соединение клиент / сервер и отправляю объект после его сериализации.Тем не менее, я не знаю, как я должен читать данные.

вот фрагмент кода:

ФУНКЦИЯ ОТПРАВКИ:

sendTo(String receiverAddr, int receiverPort,....., Object data) {
.
.
.
  if (data != null) { 
    byte[] byteObj = programming5.io.Serializer.serializeBytes(data);
    output.writeInt(byteObj.length);
    output.write(byteObj, 0, byteObj.length);
    output.flush();
  }
  output.close();
  sock.close();
}

Вызов функции:

String hostname = somevalue;
int portNo = somevalue;
Hashtable <Integer, Integer> object = somevalue;

sendTo(hostname,portNo,...,object);

Функция получения:

DataInputStream input = new DataInputStream(clientSocket.getInputStream());

int length = input.readInt();
byte[] bytes = new byte[length];
input.readFully(bytes);

Hashtable<Integer, Integer> recvObj = (Hashtable<Integer,Integer)programming5.io.Serializer.deserialize(bytes);

Это не работает.Я получаю следующее исключение:

неверный заголовок потока: 07F8ACED java.io.StreamCorruptedException: неверный заголовок потока: 07F8ACED

Скажите, пожалуйста, как мне поступить об этом.

1 Ответ

3 голосов
/ 19 февраля 2011

Используйте ObjectOutputStream для записи объектов и ObjectInputStream для их чтения.

...