简化后的出错的方法:
public void run(){
//不停地监听来自服务器的消息
while(true){
try {
ObjectInputStream ois=new ObjectInputStream(socket.getInputStream());//这句有错
Message ms=(Message)ois.readObject();
System.out.println(ms.content);
ois.close();
ois=null;
} catch (Exception e) {
e.printStackTrace();
} }}
一个java异常:CS结构中,一个线程使用while(true)监听消息,可不断new in/outStream时报错,如何解决?
答案:2 悬赏:50 手机版
解决时间 2021-03-05 17:14
- 提问者网友:嗝是迷路的屁
- 2021-03-04 23:55
最佳答案
- 五星知识达人网友:持酒劝斜阳
- 2021-03-05 00:15
首先,你这个ObjectInputStream 就不应该写在while循环里,非常影响效率
其次,既然是监听从服务器里获取的对象,那么ObjectInputStream 这个就不合适,
应为同样一个类,不同的编译器所编译出来的是不一样的,如果你从服务器a类实例化一个对象和客户端a类说创建的对象是不一样的,即使都是刚刚new出来的
所以,我建议你用DataInputStream来接收,先是接收数字,这个数字代表命令,不同的数字接收不同的东西,等等
其次,既然是监听从服务器里获取的对象,那么ObjectInputStream 这个就不合适,
应为同样一个类,不同的编译器所编译出来的是不一样的,如果你从服务器a类实例化一个对象和客户端a类说创建的对象是不一样的,即使都是刚刚new出来的
所以,我建议你用DataInputStream来接收,先是接收数字,这个数字代表命令,不同的数字接收不同的东西,等等
全部回答
- 1楼网友:过活
- 2021-03-05 00:25
不断出错是因为(socket.getInputStream()==null吧
一般来说,需要先判断一下socket有没有接收到东西。。
具体出错的栈贴出来更容易明确问题
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯