永发信息网

客户端怎么判断Socket连接已与服务器断开

答案:2  悬赏:30  手机版
解决时间 2021-02-23 12:02
客户端怎么判断Socket连接已与服务器断开
最佳答案
在客户端退出之后,会出现socket连接中断,此时是会抛出异常,在抛出异常时打印中断的客户端即可。
1. while(Binput.read()!= -1) 这种方法能判断出客户端输入是否为空,客户端断开能跳出死循环,但是得到的数据却从第二个开始了,所以这方法不适宜。
2. 在死循环中加入以下代码:
try {
socket.sendUrgentData(0);
} catch (IOException e) {
done= false; //如果抛出了异常,那么就是断开连接了 跳出无限循环
}
全部回答
你可以根据服务器收到的数据的长度来判断,如果服务器收到的数据长度是0,那么意味着你的客户端程序已经断开了连接。从tcp/ip协议栈的角度来说,就是客户端程序关闭了自己写的这一半连接,向服务器发出了一个fin。这涉及到tcp的状态迁移,关于这方面的知识,建议你看一下richard stevens先生的《tcp/ip 详解》卷一和《unix网络编程》卷一,上面有详细的解释。 关于你的第二个问题,建议你仔细看一下自己的服务器程序代码。服务器程序首先要建立一个监听socket,当有客户端连接上来时,服务器会在一个新socket上接受客户端连接。所以并不存在“乱”的问题。关于这个问题同样推荐你看上面的两本关于网络编程的经典著作。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
天生肤色黑怎么变白
唐朝人冬天睡觉盖什么?
施工测量中平面点位的测设方法有下列中的哪几
春天的家乡,是最美的季节改病句
微信小程序里面的那个全民足球,速度那一个有
凌派油箱多少升
昨天是浙江卫视的什么节日
都市千彩丽人这个地址在什么地方,我要处理点
在低位上下大单成交萎缩什么意思
Java问题:求高手解答
萨摩耶得过细小病毒了,之后拉肚子怎么办?
温州市鹿城区道教协会松台街道天妃宫地址有知
有没有功能是跟别人讲电话是可以变声音的,比
Eminem新拍的电影叫什么名字
已知抛物线的顶点是双曲线16x2-9y2=144的中心
推荐资讯
香港居民去澳门需要什么证件
QQ浏览器为什么总是自动在桌面创建上网导航
彪马2层绒面牛皮鞋怎么清洗
关于联合型瑞文测验,正确的表述包括()。A.一
炒菜锅底粘锅怎么处理
以前的亚洲第一帅是金在中,现在的亚洲第一帅
烈火龙魂手游三清到底是个什么职业啊?感觉又
多大电机需要安装补偿器?
辽宁省大连市都有什么好玩的地方?
键盘上我按QAZ但是多了字母WQSAXZ是怎么回事
马上要开学了,暑假结束,给同学老师发短信,但
阴虱病去医院挂什么科室,好治吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?