我有一个客户端服务器应用程序,它们都通过tcp进行通信。我们计划重用tcp内置保活机制来确保客户端和服务器都知道其他人还活着。什么是应用程序知道tcp保持活动失败的好方法?
几个问题:
- 现在,我们已经做了setsockopt的(..)启用TCP保活,也设置了保活超时值。让我们假设应用程序闲置。我希望应用程序知道保持活动超时......这意味着客户机 - 服务器连接已关闭。该应用程序然后必须显示错误页面。什么是应用程序知道的好方法?我相信,如果一个tcp保持超时状态,随后尝试通过该套接字发送msg将返回一个WSAENETRESET错误,但我希望应用程序知道它即使空闲并且没有消息流动。
我想执行以下操作: 有运行,每20秒(持续时间可以增加/减少),并做了setsockopt的设置保持活动为true的循环。如果连接中断,此调用将返回WSAENETRESET错误。
什么是一个很好的保活间隔使用?
在构建的保持活动机制中使用tcp的任何问题?
在此先感谢...
你的意思是有一个阻塞recv调用,通常会读取数据,但如果保持活动超时,它将返回一个WSAENETRESET错误。 – techieChamp 2014-09-03 15:29:51
@techieChamp如果这就是你如何接收数据,那么是的。如果您以其他方式接收数据,那么无论其他方式如何。据推测,你已经有了一些机制来接收来自连接的数据,无论是“轮询”,“选择”,重叠I/O,阻塞读取或其他。 – 2014-09-03 15:32:20
现在,我们正在使用send,然后是recv。我们一直在做原型工作,但将重新安排它作为一个单独的调用在不同的线程recv。 – techieChamp 2014-09-03 15:43:37