首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

求高手点拨一个Socket通信软件的有关问题解决方案

2013-10-31 
求高手点拨一个Socket通信软件的问题解决方案.高手,您好:我在做一个CS结构的Socket通信im系统,第一个作品,

求高手点拨一个Socket通信软件的问题解决方案.
高手,您好:
    我在做一个CS结构的Socket通信im系统,第一个作品,碰到了EOFException的问题..
    经过几日的研究与求教,现在我得到了两个解决方案:
    0.进行系统通信的“字节流”的传输方式的定义.
    1.进行系统通信的“字符流”传输方式的readUTF()方法的重写.
    现在,我希望得到高手的指导:
    我的第二种方案,错在什么地方..
    我做了一个实验:
    S端的源代码:
    


    一个“不停循环动态报错的console窗口”...
    求高手点拨:
    这是怎么回事..
    应该怎么修改...?
    谢谢高手!!
    一百分奉上!!
                                                            一位日日夜夜向着理想奔跑的筑梦者


                                                           2013年10月30日早晨11点31分 解决方案 通信 软件 socket exception
[解决办法]
你C端发送完数据,不close连接的么?真是个坏习惯。
dops.writeUTF("Hello_world");
dops.close(); // 这个
s.close(); // 这个


服务器端也要。
[解决办法]
1. LZ你的代码极度不规范,你的命名什么的完全都不符合Java的一般规范

2. 你的Socket类没关闭,这是一个很不好的习惯,不管是io还是数据库资源,用完了都要关掉

3. 解答你的问题,为什么你会不停的循环打印:
   a、 首先打印的原因connection reset的原因是你Client端没有阻塞你write以后就直接程序都运行完了,进程被关掉以后操作系统把你client端打开的socket直接关掉了,但是server不知道,所以在你lib类里尝试去读取消息的时候就会发现这个socket已经进入异常的状态,就抛异常了
   b、 为什么会不停的循环,因为你lib类里读取消息的代码捕获到异常了以后没有break,还在不停的尝试打印,你这个处理异常的逻辑是错误的。

热点排行