|
如何解决VxWorks情况下的tcp连接异常快速处理方法,包括客户端死机,reset重起,网线拔掉,对端掉电
[复制链接]
tcp连接模型如下(C语言)
场景:A与B是vxWorks下的两主机,需要建立一条TCP连接.(A,B任一方为client或server);
产生这个原因是因为tcp是一个单向的处理通道,也就是A到B数据量很大,B到A的数据量很小;没有设计心跳和握手.产品已成型,更改设计涉及面广,顺便说一句这个设计很不到位,需要一个开销最小的修改.
过程如下:
1.A连接B成功
2.B重启或拔板(vxWorks)
3.在B重启之后A无任何数据包到B;
4.B重启成功后,其服务端口正常打开;但与A无任可相关性,A可通过新端口与之建立连接.因旧连接一直保活没有处理.
5.在A的主机上通过inetstatShow还能看到以前的tcp连接为建立状态.
也就是目前A到B存在一个假的空闲连接要干掉.也就是一个单向的数据通道,任何心跳机制能处理这种异常;如果和第三方对接没有心跳,只能等协议栈超时(keep alive =2小时)删除.
仔细想想细节,有什么好的办法没有?
目前有如下解决办法,有其它的办法没有?
1.做心跳处理
2.A通过tcp连接发送检测数据包,触发发送异常处理.
|
|