下面是充满机遇与挑战的
先不开NurseThread, 让Client发message,TCPSever来接,当然第一次没接到。哈哈
1.在server下判断s是否关了if(socket.isclosed).没关。忘记为了什么,把TCPClient下面的socket变为全局变量,login下的mTCPClient改回来。
2.我在Tab2下面,Tab3下面加了
BubbleMessage mm=new BubbleMessage();
//m.setType(type);
//m.setSenderNick(MoreActivity.me.getNick());
//m.setSenderAvatar(MoreActivity.me.getAvatar());
mm.setcommonStr("LOGIN " + " ");
mm.setType("BuddyChat");
oos.writeObject(m);
情况是这样的,点击tab2能在console看到打印,tab3就没有了。继续debug,发现server停在client = serverSocket.accept(),肯定是老的socket已经被记住了
加这一段
if(client!=null&&client==oldclient){
System.out.println("same same same");
}else
{client = serverSocket.accept();
}
oldclient=client;
加完问题全都出来了,讨厌的就是这种,有问题但是从来不以该问题的形式出来。
现在报的异常是
java.io.StreamCorruptedException: invalid stream header: 7371007E
开始google,原来是stream的问题java.io.StreamCorruptedException: invalid stream header: 7371007E - 母鸡的日志 - 网易博客
serialization - java.io.StreamCorruptedException: invalid stream header: 7371007E - Stack Overflow
oos和ois要成对出现。
最大的问题就此解决。
然后在whle 循环的底部加上 client=null