完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
现在ch563Q做服务端,在已连接客户端时直接拔下网线 tcp状态连接状态不变
设计的是有个指示灯根据此函数返回状态点亮或熄灭来表示是否有客户端连接,正常连接会点亮,上位机软件关闭会熄灭,但直接拔下网线后此指示灯显示TCP客户端还一直存在,如何做到拔下网线自动断开TCP客户端的连接,并可以关闭这个指示灯,CH9121有引脚是可以的。但563这个不知道怎么搞。 unsigned char socket_open(void) { unsigned char i; for (i = 1; i < CH563NET_MAX_SOCKET_NUM; i++) { if ((Socketinf.ScokStatus & 0xff) == SOCK_STAT_OPEN) return 1; } return 0; } |
|
相关推荐
4个回答
|
|
您好,这个功能可以通过,PHY改变中断来实现,产生PHY改变中断时,判断是连接还是断开,来控制一颗LED灯的亮灭。在下面函数里面增加。
if(initstat & GINT_STAT_PHY_CHANGE) /* PHY改变中断 */ { i = CH563NET_GetPHYStatus(); /* 获取PHY状态 */ } |
|
|
|
这也解决不了呀,拔掉等会再插上tcp状态依旧,但实际已经断了,做TCP服务端多长时间超时,会自动断开吗?
|
|
|
|
再有若不释放资源,链接几个后满了,释放不了,那再也连不上了
|
|
|
|
实际上CH9121和CH563是完全不同的芯片,CH563作为一个单片机,是没有类似CH9121的TCPCS引脚来指示TCP连接装态的。你拔掉网线的操作就是物理层断开,在物理层断开之后,你有必要将所有的socket全部关闭,即在2楼提到的PHY转态改变中断里,如果确定是物理层断开了,那么你需要检测目前有多少个socket,然后依次全部关闭。在CH563再次报PHY状态改变中断后,确定是物理层连接上了,LINK速率协商成功,那么你再根据自己的业务逻辑,按照需求,一个一个重新打开socket。
|
|
|
|
只有小组成员才能发言,加入小组>>
468 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2871 浏览 2 评论
2359 浏览 1 评论
813浏览 2评论
CH569通过HSPI实现USB3.0和FPGA高速双向通讯
639浏览 1评论
497浏览 1评论
CH32F103C8T6使用当前官网上的CDC例程会出现设备描述符请求失败
362浏览 1评论
638浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 02:12 , Processed in 1.158998 second(s), Total 55, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号