日期:2014-05-16  浏览次数:20718 次

UNIX/Linux socket 编程的连接断开!
如果服务器和客户端建立好连接后,因为某些原因,我想在某一端将这个连接给断开,有什么函数可以做到,或者说有什么方法?

------解决方案--------------------
::shutdown(sock, SHUT_RDWR);
TEMP_FAILURE_RETRY(::close(sock));
------解决方案--------------------
close(socket);
socket = -1;

------解决方案--------------------
引用:
Quote: 引用:

close(socket);
socket = -1;

如果采用这种方式断开连接,对端是不会知道的啊!

这个你不用担心,协议会帮你的!
------解决方案--------------------
对端close后,socket会变成可读,recv返回

不用send recv 怎么可能知道?
------解决方案--------------------
对端close以后,本端的read函数会读到EOF,如果用write,会返回-1。这样就可以知道对端close了。
------解决方案--------------------
没有心跳单纯依赖TCP协议来解决连接断开问题是不可靠的。