ICE服务端检测连接断开将你断开是怎么回事急

TCP是一种面向连接的协议,连接的建立和断开需要通过收发相应的分节来实现。某些时候,由于网络的故障或是一方主机的突然崩溃而另一方无法检测到,以致始终保持着不存在的连接。下面介绍一种方法来检测这种异常断开的情况

1) 在TCP协议中提供了KEEPALIVE检测。该选项使能后,在一个TCP连接上,若指定的一段时间内没有数据交换,则自动发送分节等待对方确认。

判定断开前发送探测分节的次数

2) 设定探测相关选项值

3) 设置套接字的属性

}

可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

}

尽管网上的例程一堆堆,但还是花了好几天时间才跑通了一个USART通过中断方式实现的小程序。相当无比地郁闷啊。记录一下遇到的问题:

在主程序中通过查询方式收发数据时,结果并不稳定。对比了ST提供的例程中的设置,将RCC配置提到了所有配置的最前面后,功能实现。结论:应先配置RCC,再初始化其他外设。

2. RAM下调试遇到的问题

在上述查询方式的基础上,增加对NVIC的配置,USART的中断设置,以及ISR中的处理过程,放到RAM下调试,无法进入ISR。有以下两个测试结果:1)在主程序while中调用USART_GetITStatus,判断USART中断事件是否发生及中断是否使能,结果为SET。2)在调试时看NVIC的寄存器,USART1已经enable了,说明寄存器已经写入。上述两点结果下,程序从理论上应该进入中断。百思不得其解之下,鬼使神差地把程序放到flash下,一切问题烟消云散,程序跑通,在ISR中处理了收发事件。

flash和ram下程序的不同动作,原因未知,做了如下一些对比(心疼我的flash啊):

T表示只设置了USART发送中断,R表示只设置了USART接收中断。可以看出,不是在FLASH的程序中是否设置过NVIC的问题。导致错误的原因可能是flash下和ram下程序的固件库版本不同。当程序加载到flash或ram中后,系统是如何运行程序的?两者之间是否有干扰和影响?这点需要进一步学习。

chip->重新上电,就可以解锁。如法炮制,失败。因此在2中的试验中只能在flash中烧入空程序。解决方法需要继续摸索。

}

我要回帖

更多关于 ICE服务端检测连接断开 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信