作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想通过 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);
这是行不通的。我收到以下异常:
无效的流 header :07F8ACEDjava.io.StreamCorruptedException:无效的流 header :07F8ACED
请告诉我我应该怎么做。
最佳答案
使用ObjectOutputStream
写入对象,使用ObjectInputStream
读取对象。
关于java - 如何在 java 中通过 TCP 连接发送序列化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5046185/
我是一名优秀的程序员,十分优秀!