黑马程序员技术交流社区
标题:
关于序列化Socket传输的问题
[打印本页]
作者:
陈军
时间:
2012-11-20 11:50
标题:
关于序列化Socket传输的问题
本帖最后由 陈军 于 2012-11-22 09:19 编辑
自己在做一个小项目时,用Socket传输一个对象,假设对象是aa(A aa=new A(),aa.set...)
我用了序列化的流。ObjectInpuStream 和ObjectOutputStream
但是如果我直接用writeObject(aa)写到输出流时,
服务端读取的时候获取不到。不明是什么原因。虽然最后我用集合的方式解决了。但是这个问题还没想通。
下面是写和读的关键代码:
public void sendCertifyInfo1(TransFileProtocol filePro)throws Exception{
ObjectOutputStream out=new ObjectOutputStream(s.getOutputStream());
out.writeObject(filePro);
out.flush();
}
while (true) {
try {
Socket s = this.accept();
String ip = s.getInetAddress().getHostAddress();
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
System.out.println("开始获取协议");
TransFileProtocol tf=(TransFileProtocol )ois.readObject();
System.out.println("获取成功");
System.out.println(tf.isStartFlag());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
其中TransFileProtocol 是一个小协议。
作者:
王阳
时间:
2012-11-20 20:51
TransFileProtocol filePro 这个参数是什么??
作者:
王阳
时间:
2012-11-20 20:53
不晓得你上面的代码是错是对,如果是对的,那就是说你写入的是TransFileProtocol,所以接受也得拿这个。而且拿集合保存序列化的对象,然后写入,这样不是更方便吗?
作者:
陈军
时间:
2012-11-22 09:18
王阳 发表于 2012-11-20 20:51
TransFileProtocol filePro 这个参数是什么??
这是一个自己做的小协议类
作者:
王阳
时间:
2012-11-22 19:47
陈军 发表于 2012-11-22 09:18
这是一个自己做的小协议类
这个,就真不晓得了。不过建议你还是保存在集合里好一点。起码读写时候会方便点,只用读写一次,资源消耗较低
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2