循环recv()方法阻塞的问题,在线等。

神奕(deprecated) 神奕(deprecated) 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
char buffer[1024];
bzero(buffer, 1024);
while( (len = recv(fd, buffer, 1024, 0)) > 0)
{

}
这里recv总是会阻塞,我想通过添加判断 len < 1024 就break,但是如果消息刚好是1024的整数倍,还是会阻塞。

想问问大神们应该怎么修改?(还是说必须把fd设置成非阻塞。。。?)
...全文

相关推荐

python socket多线程通讯实例分析(聊天室)

主要介绍了python socket多线程通讯方法,以聊天室程序实例分析了Python基于Socket实现多线程通信的相关技巧,需要的朋友可以参考下

weixin_38689551

socket_recv函数使用心得.

这是一份关于 socket_recv的文档,相信对想学习 socket_recv的同学一定有很大的帮助!

happylch21

关于socket阻塞与非阻塞情况下的recv、send、read、write返回值.zip

关于socket阻塞与非阻塞情况下的recv、send、read、write返回值.zip

lj_70596

recv与send阻塞非阻塞详解[项目代码]

本文详细介绍了recv()和send()函数在阻塞和非阻塞模式下的行为、返回值及超时设置。文章首先展示了阻塞模式下server和client的代码示例,包括如何通过setsockopt设置超时。接着探讨了非阻塞模式的实现方式,包括在socket()中使用SOCK_NONBLOCK标志、使用accept4()设置非阻塞连接,以及通过fcntl()动态修改socket阻塞属性。此外,文章还解释了如何单独为recv或send设置非阻塞行为(MSG_DONTWAIT),并系统总结了两种模式下函数的返回值含义(>0/0/-1及对应errno场景)。最后提供了关于socket阻塞控制的扩展阅读参考。

lake5

对send(),recv()函数的全面理解

下面小编就为大家带来一篇对send(),recv()函数的全面理解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

weixin_38720050
评论
收藏 已收藏
分享
返回顶部