1

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

どうすればいいのか教えてください。

4

1 に答える 1

3

ObjectOutputStreamオブジェクトの書き込みとObjectInputStream読み取りに使用します。

于 2011-02-18T21:52:12.587 に答える