NAT?是IP_ADDR_ANY吗?我用的是UDP接收没有操作系统。我这边设置了两个网卡,两个网卡MAC地址一样本地IP不一样,两个UDP的目的IP一样但是本地地址不一样,两个UDP对应两个网卡。如果一个网卡的话设别不出两个设备。下面这个是ETH中断的回掉函数,我想用第一网卡接收数据,接收数据的流程是
ethernetif_input()--------ethernet_input()---ip_input()------udp_input()
查过资料这四个接收函数会先查找自己的网卡如果不对会在网卡链表中从头到尾查找,所以用第一个网卡接收数据如果不是这个网卡会去寻找对的网卡然后传到上层知道接收完成。
我在void lwip_pkt_handle(void)中只用一个网卡接收数据发现第二个IP的数据接收到2000包之后就不能接受了第一个正常,如果在void lwip_pkt_handle(void)中吧两个网卡接收都打开 ethernetif_input(&lwip_netif1);
//ethernetif_input(&lwip_netif2);第二个就不会断流,我用指示灯看的接收情况,具体数据接收如何没法看,我就怕这样做吧数据冲点了在第一个接收完后第二个接收感觉逻辑上有很大问题,想不通、
另外设置一个udp然后用IP_ADDR_ANY这个接收和上面的一样,都要打开两个网口接收但是感觉这样做逻辑就是不对,帮我看看书都翻烂了感觉的理解没错就是和想的不一样,头痛
void lwip_pkt_handle(void)
{
ethernetif_input(&lwip_netif1);
//ethernetif_input(&lwip_netif2);
}
|