永发信息网

一个java异常:CS结构中,一个线程使用while(true)监听消息,可不断new in/outStream时报错,如何解决?

答案:2  悬赏:50  手机版
解决时间 2021-03-05 17:14
简化后的出错的方法:
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();
} }}
最佳答案
首先,你这个ObjectInputStream 就不应该写在while循环里,非常影响效率
其次,既然是监听从服务器里获取的对象,那么ObjectInputStream 这个就不合适,
应为同样一个类,不同的编译器所编译出来的是不一样的,如果你从服务器a类实例化一个对象和客户端a类说创建的对象是不一样的,即使都是刚刚new出来的
所以,我建议你用DataInputStream来接收,先是接收数字,这个数字代表命令,不同的数字接收不同的东西,等等
全部回答
不断出错是因为(socket.getInputStream()==null吧 一般来说,需要先判断一下socket有没有接收到东西。。 具体出错的栈贴出来更容易明确问题
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如何修改三星note3n9009手机加密锁
微信上朱老师讲孩子叛逆的靠不靠谱
大润发新塘店这个地址在什么地方,我要处理点
【矛盾的对立统一】举个矛盾对立统一的例子
坐飞机可以带洗面奶,乳液,爽肤水吗?
反相高效液相色谱法与高效液相色谱法有什么不
日语 嘎嘛得是什么意思?
1997年出版的动画片有哪些
有没有笑话
12.25从天津到杭州k47要多少时间到抗州火车
佳缘超市地址有知道的么?有点事想过去
桑蚕丝共有几个等级 怎样辨别真假
请问,自己的临场反应能力很差怎么办?,以前就
谁能告诉我吴圩是南宁那个区的、
爱华生活超市(青阳二分店)地址在哪,我要去那
推荐资讯
用微波炉煮米饭怎么煮
es文件浏览器怎么安装到电视上
同级跑车,为什么路面上的福特野马比科迈罗多
男人应该找一个自己喜欢的还是找个喜欢别人的
赣南师大要读几年一学期要多少费用
5岁半儿童会画人12部分,其心理活动已具备()
09款速腾1.6和12款宝来1.6的发动机一样吗?
为什么有些人的手特别粗糙
钢筋混凝土生化池多少钱一个立方大约700方左
下列遗址遗迹中最能体现国内民族团结友好的是
今年,app制作费用多少?直播app怎样做??
波奇外贸服饰在哪里啊,我有事要去这个地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?