linux socket 非阻塞模式编程,客户端连接断掉或者异常,为什么还能write成功,返回大于0?
发布网友
发布时间:2022-04-24 16:00
我来回答
共2个回答
热心网友
时间:2023-10-21 03:23
客户端连接断掉,不见得会立即被网卡驱动检测到,数据只是存入本地的写缓冲区,不代表对端就收到了。
在系统实时性要求不高的情况下,可以采用心跳检测机制,客户端每秒钟发送一个KeepAlive消息给服务端,连续5s没收到服务端就可以认为连接断开了。追问如果实时性要求较高,这种情况该如何处理呢?如果发送的消息很重要,服务端发送成功,但客户端已经断了,无法收取数据,有什么更好的办法解决?而且我现在关闭了nagle算法,是TCP_NODELAY的,不应该缓存到本地的吧!
追答实时性高的话,中断方式总比轮询好很多。但我不是开发,没有更多的发言权。
热心网友
时间:2023-10-21 03:23
write应该会成功
如果是send的话,应该会失败吧追问为什么write会成功,send会失败呢?
追答我是新手,猜的。