当前位置: 技术问答>linux和unix
unix下的c的socket变成select超时问题
来源: 互联网 发布时间:2017-04-25
本文导语: unix下的c变成,socket通讯的客户端和服务端。 客户端多线程每个线程和服务端建立一个连接,客户端发送请求参数,然后就等待服务器端返回数据,select监听3秒没有可读的数据,就表示超时,相关服务就退出。 服务...
unix下的c变成,socket通讯的客户端和服务端。
客户端多线程每个线程和服务端建立一个连接,客户端发送请求参数,然后就等待服务器端返回数据,select监听3秒没有可读的数据,就表示超时,相关服务就退出。
服务器端接收到数据处理业务完成后,包头和包体拼一个buf返回,服务端不管是否超时,正常做完业务返回
现在有个问题,如果客户端监听有个业务超时,他就不做处理,接着进行下一个数据的处理。如果服务端对于超时的这个业务还返回数据,这部分数据去哪了?请高手指教
客户端多线程每个线程和服务端建立一个连接,客户端发送请求参数,然后就等待服务器端返回数据,select监听3秒没有可读的数据,就表示超时,相关服务就退出。
服务器端接收到数据处理业务完成后,包头和包体拼一个buf返回,服务端不管是否超时,正常做完业务返回
现在有个问题,如果客户端监听有个业务超时,他就不做处理,接着进行下一个数据的处理。如果服务端对于超时的这个业务还返回数据,这部分数据去哪了?请高手指教
|
这样的话,是会有影响的,那要看你的数据传送结构了,你可以给每个数据包加一个id,接受的时候检查id是否匹配,不符合,丢弃。
|
每个请求有唯一ID的,定时检查每个请求是否超时,超时的请求可以重试。
不过一般这种情况下超时,那个连接都要断掉的。
不过一般这种情况下超时,那个连接都要断掉的。
|
如何客户端的连接没有中断的话,那就到客户端socket那了,
如果中间连接有中断的话,那就丢掉了。
如果中间连接有中断的话,那就丢掉了。