Linux-服务端调用shutdown(sock,2)操作后,客户端是否还接收数据

Linux-服务端调用shutdown(sock,2)操作后,客户端是否还接收数据

甜柠檬 发布于 2017-07-03 字数 101 浏览 1246 回复 2

服务端调用shutdown(sock,2)操作后,客户端是否还可以接收数据?服务端怎么正确关闭一个socket连接?

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灵芸 2017-10-01 2 楼

服务器端调用shutdown函数,并不影响客户端的操作。只是服务器端不会再发数据到客户端,客户端依然可以接收服务器先前发送的数据

浮生未歇 2017-08-29 1 楼

shutdown(sock,2)也即是shutdown(sock,SHUT_RDWR),也就是关闭服务端的读和写,这时候客户端读取不到任何数据。建议采取half shutdown的方式shutdown(sock,SHUT_WR),这样服务端可以处理客户端后续发送过来的数据,知道客户端也调用shutdown(sock,SHUT_WR),这时候再调用shutdown(sock,SHUT_RD),这样关闭就比较gracefull了。走TCP协议的话,是没法主动争取去关闭连接的,只能关闭服务端,如果控制的话可以在应用层实现。