一些事实:
- 我的申请是客户
- 我有一个Socket
游泳池
- 多个Thread
使用此池
- 每个Thread
都可以超时
- 超时时,即使没有从服务器读取回复,Socket
也会返回到池中。
问题:
在超时时,使用此Thread
的下一个Socket
可能必须读取一些旧消息(在返回Socket后由服务器发送)。
问题:
在使用之前“清除”InputStream
Socket
的最佳方式是什么?
答案 0 :(得分:4)
如果您的I / O协议未正常完成,最佳解决方案是关闭有问题的I / O通道,将其从池中删除,打开新连接并将其添加到池中。
为了实现这一目标,客户和服务器都应该通过提供一种确认另一端活跃度的方法来为这种可能性做好准备。