socket (TCP) 用 recv 接收数据阻塞问题?

发布于 2022-09-05 01:06:57 字数 109 浏览 12 评论 0

一般的说法:socket (TCP) 用 recv 接收数据。如果内核缓存区没有数据就会阻塞。

那如果TCP连接没有断,但对方一直不发数据, recv 函数调用是不是会一直把程序阻塞住。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

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

评论(2

只等公子 2022-09-12 01:06:57

socket分为阻塞和非阻塞两种,默认阻塞模式,可以通过参数设置修改为非阻塞;
阻塞的含义:其实是TCP/IP协议栈中的缓冲区,
(1)阻塞模式下:当buffer内没有数据了,那么就一直等待到有数据返回;
(2)非阻塞模式下:没有数据,会立即返回一个参数(例如python下是抛出一个异常)

婴鹅 2022-09-12 01:06:57

可以用setsockopt()函数设置超时时间

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文