日期:2014-05-16  浏览次数:20642 次

求助帖, 非阻塞send, 却出现EINPROGRESS错误, 持续在线等!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
场景描述(利用epoll管理):
客户端发送请求, 服务端回应(连续回应n个包结束). 第一次没问题
客户端再次发送请求, 服务端继续回应(连续回应n个包结束), 但是这次send完最后一个包之后, epoll取socket的循环, 仍然会把这个socket取出, 并且flag是错误, 错误为EINPROGRESS.

大家遇到过吗, socket是非阻塞的send. 每次都是第一次没问题, 第二次就这样. 
不明白为什么非阻塞send也会出现EINPROGRESS, 又不是connect.
epoll socket 非阻塞 EINPROGRESS

------解决方案--------------------
你的错误码应该是调用send之前设置的, 看下是不是socket对应的客户端已经关闭导致的
------解决方案--------------------
这个错误应该很正常吧!连接没有完成吧!
看看是不是socket已经失效啦!也就是链路被破坏了

是不是在重连过程中,你这边又在继续发数据呢?
每次调用接口的时候最好能及时的检查返回值!
------解决方案--------------------
man send,手册ERRORS里面没有EINPROGRESS的值,应该不是send的报错
------解决方案--------------------
把connect改成阻塞的,再测试下结果
------解决方案--------------------
引用:
Quote: 引用:

把connect改成阻塞的,再测试下结果
我这边是作为server呀, 被连接

如果错误信息定位不到问题,写个测试客户端程序调试下