今天在练习网络通信发现了这个错误 。。我是很迷茫啊
后来就是随意修改了一下 竟然不报错了、还是学习太少
错误代码(部分)
public void run() {ObjectInputStream ois = null;ObjectOutputStream oos = null;try {ois = new ObjectInputStream(socket.getInputStream());oos=new ObjectOutputStream(socket.getOutputStream());CommandTranser msg = (CommandTranser) ois.readObject();msg = execute(msg);//如果登录成功if(msg.isFlag()){//如果要发送的用户在线 发送信息if(SocketList.getSocket(msg.getReceiver())!=null){oos = new ObjectOutputStream(SocketList.getSocket(msg.getReceiver()).getOutputStream());}else{oos=new ObjectOutputStream(socket.getOutputStream());msg.setResult("当前用户不在线");}}else{//oos=new ObjectOutputStream(socket.getOutputStream());}oos.writeObject(msg);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
报错显示的位置在oos.wirteObject(msg);
改了好久 想着写细点吧 就又添加了else语句
把
oos=new ObjectOutputStream(socket.getOutputStream());
写在else语句里面,竟然过了、
不清楚为什么oos不能多次实例化 不会覆盖吗?
或许是socket机制的问题吧。
马克一下~