求助帖, 非阻塞send, 却出现EINPROGRESS错误, 持续在线等!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
场景描述(利用epoll管理):
客户端发送请求, 服务端回应(连续回应n个包结束). 第一次没问题
客户端再次发送请求, 服务端继续回应(连续回应n个包结束), 但是这次send完最后一个包之后, epoll取socket的循环, 仍然会把这个socket取出, 并且flag是错误, 错误为EINPROGRESS.
大家遇到过吗, socket是非阻塞的send. 每次都是第一次没问题, 第二次就这样.
不明白为什么非阻塞send也会出现EINPROGRESS, 又不是connect.
客户端发送请求, 服务端回应(连续回应n个包结束). 第一次没问题
客户端再次发送请求, 服务端继续回应(连续回应n个包结束), 但是这次send完最后一个包之后, epoll取socket的循环, 仍然会把这个socket取出, 并且flag是错误, 错误为EINPROGRESS.
大家遇到过吗, socket是非阻塞的send. 每次都是第一次没问题, 第二次就这样.
不明白为什么非阻塞send也会出现EINPROGRESS, 又不是connect.
...全文
相关推荐
recv与send阻塞非阻塞详解[项目代码]
本文详细介绍了recv()和send()函数在阻塞和非阻塞模式下的行为、返回值及超时设置。文章首先展示了阻塞模式下server和client的代码示例,包括如何通过setsockopt设置超时。接着探讨了非阻塞模式的实现方式,包括在socket()中使用SOCK_NONBLOCK标志、使用accept4()设置非阻塞连接,以及通过fcntl()动态修改socket阻塞属性。此外,文章还解释了如何单独为recv或send设置非阻塞行为(MSG_DONTWAIT),并系统总结了两种模式下函数的返回值含义(>0/0/-1及对应errno场景)。最后提供了关于socket阻塞控制的扩展阅读参考。
关于socket阻塞与非阻塞情况下的recv、send、read、write返回值.zip
关于socket阻塞与非阻塞情况下的recv、send、read、write返回值.zip
windows的阻塞和非阻塞Socket编程
NULL 博文链接:https://daojin.iteye.com/blog/720402
Linux下的Socket编程实例(阻塞和非阻塞)
Linux下基于C/C++的Socket的阻塞和异步编程实例
socket send和recv详解
send 和recv 详解,绝对好东西。


