UNIX/Linux socket 编程的连接断开!

追_逐 2013-08-30 05:14:16
如果服务器和客户端建立好连接后,因为某些原因,我想在某一端将这个连接给断开,有什么函数可以做到,或者说有什么方法?
...全文
229 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
追_逐 2013-09-01
  • 打赏
  • 举报
回复
引用 9 楼 qq120848369 的回复:
没有心跳单纯依赖TCP协议来解决连接断开问题是不可靠的。
什么是心跳? 一个软件还是一个函数? 它是专门来处理TCP 断开的吗?
小耸 2013-08-31
  • 打赏
  • 举报
回复
对端close以后,本端的read函数会读到EOF,如果用write,会返回-1。这样就可以知道对端close了。
追_逐 2013-08-31
  • 打赏
  • 举报
回复
引用 4 楼 max_min_ 的回复:
[quote=引用 3 楼 su_787910081 的回复:] [quote=引用 2 楼 max_min_ 的回复:] close(socket); socket = -1;
如果采用这种方式断开连接,对端是不会知道的啊![/quote] 这个你不用担心,协议会帮你的![/quote] 就算协议会帮我,我也得拿到协议给我的信息,以此信息来判断该是断开连接还是重新连接。 主要是我不应该在这边傻等吧! 不要告诉我让我用sned() 或者recv() 函数去尝试啊! 嘿嘿!!!!
monster_xu 2013-08-31
  • 打赏
  • 举报
回复
对端close后,socket会变成可读,recv返回 不用send recv 怎么可能知道?
qq120848369 2013-08-31
  • 打赏
  • 举报
回复
没有心跳单纯依赖TCP协议来解决连接断开问题是不可靠的。
追_逐 2013-08-31
  • 打赏
  • 举报
回复
如果这样说的话,那我在服务器商企不是要专门开个线程来检测,客户端是否断开连接了。如果已经断开连接了,那么我该将这个连接断开,回收一个连接的资源。
max_min_ 2013-08-30
  • 打赏
  • 举报
回复
引用 3 楼 su_787910081 的回复:
[quote=引用 2 楼 max_min_ 的回复:] close(socket); socket = -1;
如果采用这种方式断开连接,对端是不会知道的啊![/quote] 这个你不用担心,协议会帮你的!
追_逐 2013-08-30
  • 打赏
  • 举报
回复
引用 2 楼 max_min_ 的回复:
close(socket); socket = -1;
如果采用这种方式断开连接,对端是不会知道的啊!
max_min_ 2013-08-30
  • 打赏
  • 举报
回复
close(socket); socket = -1;
卢飞鹏 2013-08-30
  • 打赏
  • 举报
回复
::shutdown(sock, SHUT_RDWR); TEMP_FAILURE_RETRY(::close(sock));

18,772

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 专题技术讨论区
社区管理员
  • 专题技术讨论区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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