Linux下Socket接收超时和主机端口 如何区分
client连接到服务器后,等待数据,如果服务器不发送数据或者服务器断线
Recv返回值都是0。
如何区分服务器不发送数据或者服务器断线
------解决方案--------------------保活定时器keepalive呢?
------解决方案--------------------
只有收到对端发送的FIN分节,recv才返回0!
不发送数据的情况阻塞或者返回-1(errno==EAGAIN)
断线得分多种情况,看服务器是否发出FIN分节.否则同不发送数据一样.
------解决方案--------------------用errno判断
------解决方案--------------------不发送数据你就自己定个策略干掉它, 比如一定时间内未请求.
------解决方案--------------------
不发送数据部阻塞吗?如果用非阻塞IO,可以判断返回值,具体两种情况下返回值不一样
------解决方案--------------------不发数据会堵塞在recv吧