打印
[STM32F4]

关于LWIP数据接收的问题,急急急

[复制链接]
1586|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xp1179926265|  楼主 | 2017-8-9 16:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
电脑传下来8个数据包,属于两个IP地址(在开发板上设置了两个接收的IP地址),用不太合理的方法(自己感觉逻辑上不对)能接收到数据,现在换了一个思路想把数据包中的第二IP改为第一个IP,让开发板上的第一个IP吧8个数据包都接受了,查了网上说的以太网数据头帧,IP头帧,udp头帧等,看到好几种说法,试过改IP发现都不行,问一下大神有没有做过这种的,或者给一点思路或者可靠的LWIP中数据包头帧的格式等,只想把第二个IP地址改为第一个(第一个比第二个IP多1),很急,求大神
沙发
lxyppc| | 2017-8-9 16:48 | 只看该作者
很简单啊,搞个目的地址NAT就把两个IP变一个了

使用特权

评论回复
板凳
wanduzi| | 2017-8-9 16:55 | 只看该作者
不是,大神,随便给你找个相关资料,看看有没有用。
使用 LwIP TCPIP 栈,在 STM32Cube 上开发应用.pdf (1011.79 KB)



使用特权

评论回复
地板
xp1179926265|  楼主 | 2017-8-9 17:12 | 只看该作者
lxyppc 发表于 2017-8-9 16:48
很简单啊,搞个目的地址NAT就把两个IP变一个了

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);
}

使用特权

评论回复
5
lxyppc| | 2017-8-9 18:44 | 只看该作者
没什么想不通的,处理器就一个,你要处理两个地址的IP包,可不就得一个一个的来么

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

62

帖子

0

粉丝