socket server problem?

libad 2003-06-17 11:52:38
我有一个程序是socket server,监听端口3015,规定只能接受一个客户端的连接。在连接成功建立以后,
如拔掉客户端网线,则用netstat -a|grep 3015查看,显示如下:

*.3015 *.* 0 0 24576 0 LISTEN
ultra60.44785 ultra60.3015 32768 0 32768 0 ESTABLISHED
ultra60.3015 ultra60.44785 32768 0 32768 0 ESTABLISHED

以后就长时间处于这个状态,再也不变了,客户端就再也连不上了!!!!!!


我在程序里会判断如果read<=0,会close(client_socket),但拨网线好象检测不出来。

能有什么办法检测出来吗?
...全文
17 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
vvlei 2003-06-24
  • 打赏
  • 举报
回复
收益
kp_flysky 2003-06-19
  • 打赏
  • 举报
回复
只要采取心跳测试的办法
我觉得是有办法的
微软的网上邻居就可以监测得到
blh 2003-06-19
  • 打赏
  • 举报
回复
用recv
rick_1000 2003-06-19
  • 打赏
  • 举报
回复
用超时机制,使用系统ping来监测网络是否畅通。

哪位兄弟那里有兼职的活,不论价格多少,请通知我。
谢谢!
rick_1000@sina.com
zerolatency 2003-06-19
  • 打赏
  • 举报
回复
只能由应用来解决,TCP协议只是采用Keeplive来监控,但探测时间较长,如果
修改其定时间隔,会影响通讯效率,你可采用超时机制或心跳测试的方法来实现
cao_elsie 2003-06-18
  • 打赏
  • 举报
回复
可以定时向客户端发送数据,如果发送出错就重建连接
samstay 2003-06-17
  • 打赏
  • 举报
回复
可以采用超时控制,同时采用keepalive选项
postbeerliu 2003-06-17
  • 打赏
  • 举报
回复
写那个已连接的端口,或者打开TCP的保活选项(keepAlive)

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧