IP与MAC--ARP及W5500超时机制,非阻塞

2014-10-16 echo Network

1.今天客户反馈了个问题:使用UDP通信,在电表(类服务器)不断电的情况下,更换集中器(类客户端)(IP不变,MAC变了),通信会失败,前提条件:由交换机组成的网络

按照理论上来讲,应该是会有问题的。后面就补习了下ARP相关的知识。每个主机和路由器都会有ARP cache,无论主机是跑的是软件协议栈(如Lwip等),还是硬件协议栈(w5500)。ARP是为上层的协议服务的。

在不断电的情况下,电表中缓存着前一个集中器的IP和MAC映射关系,如果更换集中器之后且IP不变,电表进行UDP通信使用的还是之前的映射关系,所以会通信异常。

2.另一个客户反馈的W5500的TCP连接问题,connect。如果服务器断了,客户端会一直死在连接的while里面不断请求连接。很明显,使用的是类似阻塞模式,但是超时中断未发生。A,改为非阻塞方式,立即返回状态。B,设置中断及合理的超时时间(TCPto)。SIMR,SIR及RTR, RCR

while ( IINCHIP_READ(Sn_SR(s)) != SOCK_SYNSENT )
{
if(IINCHIP_READ(Sn_SR(s)) == SOCK_ESTABLISHED)
{
break;
}
if (getSn_IR(s) & Sn_IR_TIMEOUT)
{
IINCHIP_WRITE(Sn_IR(s), (Sn_IR_TIMEOUT)); // clear TIMEOUT Interrupt
ret = 0;
break;
}
}

标签: 网络 W5500


版权所有: 本文发布于DD'echo
转载请保留原文链接: http://echo.z-dd.net/post-25.html
除非注明,文章均为 echo >> 原创 ,欢迎转载!转载请注明本文地址,谢谢!

友荐云推荐

发表评论:

Copyright @ 2015 DD'echo All rights reserved. Powered by emlog