日期:2014-05-20  浏览次数:20700 次

请教怎么在一个socket连接里同时用不同种字节流的子类做不同输出
本帖最后由 mxw3755 于 2013-08-10 01:01:26 编辑
可能我们遇到这种情况,我想先输出一段字节,
OutputStream ops = socket.getOutputStream();
然后输出
ops.write("abc".etBytes("GBK"));
然后我又想在这个连接里输出对象,
ObjectOutputStream os = null; 
os = new ObjectOutputStream(socket.getOutputStream());
coordinate coor = new coordinate();
os.writeObject(coor);
在Server端先用BufferedReader的readline方法接收字节
再用ObjectInputStream流接收对象,
可是在接收对象时候遇到这个异常
正在监听56号端口。
abc
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source)
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at servers.driverThread.<init>(driverThread.java:23)
at servers.start.main(start.java:21)

driverThread.java:23:
is = new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));
start.java:21:
new Thread(new driverThread(socket)).start();

请教下这个问题怎么解决。
socket 字节流 服务器 tcp

------解决方案--------------------
你是想同时用对象流和字符流写入输出流,然后在接收方接收是么?
两种流在同一接口下面,接收方如何判断是哪种输出流呢。。
是否可以我不确定,我只是觉得没那个必要。
既然你的目的是传输多个对象到接收方,那么为什么不用对象流写入这些所有的对象让接收方来接受呢?
具体见:http://bbs.csdn.net/topics/390531623