c++ - socket (TCP) 用 recv 接收数据阻塞问题?
扔个三星炸死你
扔个三星炸死你 2017-06-10 09:48:28
[C++讨论组]

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

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

扔个三星炸死你
扔个三星炸死你

全部回复(2)
PHP中文网

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

大家讲道理

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号