当前位置: 技术问答>linux和unix
求助帖, 非阻塞send, 却出现EINPROGRESS错误, 持续在线等!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
来源: 互联网 发布时间:2017-04-24
本文导语: 场景描述(利用epoll管理): 客户端发送请求, 服务端回应(连续回应n个包结束). 第一次没问题 客户端再次发送请求, 服务端继续回应(连续回应n个包结束), 但是这次send完最后一个包之后, epoll取socket的循环, 仍然会把...
场景描述(利用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.
|
你的错误码应该是调用send之前设置的, 看下是不是socket对应的客户端已经关闭导致的
|
这个错误应该很正常吧!连接没有完成吧!
看看是不是socket已经失效啦!也就是链路被破坏了
是不是在重连过程中,你这边又在继续发数据呢?
每次调用接口的时候最好能及时的检查返回值!
看看是不是socket已经失效啦!也就是链路被破坏了
是不是在重连过程中,你这边又在继续发数据呢?
每次调用接口的时候最好能及时的检查返回值!
|
man send,手册ERRORS里面没有EINPROGRESS的值,应该不是send的报错
|
把connect改成阻塞的,再测试下结果
|
如果错误信息定位不到问题,写个测试客户端程序调试下