|
第一次在论坛发帖咨询关于rt-thread的问题,在问问题之前,先感谢ffxz,aozima,bernard以及N多位大神们的努力!
小弟的问题如下:
最近在用rt-thread v1.10+stm32f107做一个tcp client,现在想把网线拔出/插入的功能完善,使得在网线拔出时,关闭sokets;网线重新插入时,可以重新连接。
目前我已加了PHY检测中断,可以:
PHY中断-->eth_device_linkchange();-->eth_rx_thread_entry()-->netifapi_netif_set_link_down/up();-->netif_set_link_down/up();
用list_if()可以查看到网络的状态变化。
但是这样的话,还不够实用,因为网线的插拔只是通知了,但还没有进行什么实质性的操作,不知道后面应该要怎么处理,才可以让lwip知道网线断开了。
最重要的是,重新接上可以马上进行重新连接服务器的动作(连接部分的代码已做了自动重连的处理)。另:已加了keepalive功能,不过这个响应不够快,太快了又会耗服务器资源,不是根本解决之道。
已google搜索了很多,都没有找到细节的流程,基本上都是说要加phy中断,然后复位MAC,然后就没了,但我测试了光这样的话工作还不能正常。望请各位有了解这方面的给小弟指点一二,十分感谢! |
|