OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5466|回复: 2

lwip udp对不同ip地址发送数据问题

[复制链接]

1

主题

1

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2015-7-14
在线时间
0 小时
发表于 2015-7-14 11:48:05 | 显示全部楼层 |阅读模式
5金钱
小弟最近才开始使用STM32CubeMX,使用的是STM32F107+DP83848,在调试网口时,遇到问题,在此请各位大大,牛人帮帮忙。

我ETH,配为RMII模式:

使用LwIP,使用UDP,没有动态分配IP地址

除了修改了ip地址、子网掩码、网关,All LwIP Options 里面的选项都是默认的,没有进行修改。

初始化如下:
void udp_server_init(void)
{

Server_pcb = udp_new();

udp_bind(Server_pcb,IP_ADDR_ANY,UDP_LOCAL_PORT);

udp_recv(Server_pcb,udp_server_recv,NULL); 

}
回调函数如下:收到有数据就放到接收数组中去,并将该收到的数据再回传原IP地址
void udp_server_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p,struct ip_addr *addr, u16_t port)
{
struct ip_addr destAddr = *addr;

uint8_t i;

if(p != NULL)
{
for(i=0;i<p->len;i++)
IP_Recv=*((uint8_t *)p->payload+i);

udp_sendto(Server_pcb,p,&destAddr,port);
}
pbuf_free(p); 
}

这样接收和发送都没有问题,对每个IP地址发过来数据也都能马上将数据回传。

但当我想同时对多个IP地址进行发送时,总是第一个发送能成功,后面的发送都不能成功,本来自己对lwip就不熟悉,现在被这个问题困扰好几天都没有找到原因,只有在此求助各位大侠了。

struct pbuf *p = pbuf_alloc(PBUF_TRANSPORT,8,PBUF_RAM);

if(Other1_Connect == 1) 
{
udp_sendto(Server_pcb,p,&Other1_addr,Other1_port);
Delay_m(5000);
}
//***************************************************************************
if(Other2_Connect == 1)
{
udp_sendto(Server_pcb,p,&Other2_addr,Other2_port);
Delay_m(5000);
}
以上程序是放到某一个定时器中断回调函数来执行的(1s中产生一个中断),Other1_Connect变量是在收到某一个ip地址来的数据后置1,Other2_Connect同样是。但问题就来了,如果Other1_Connect先置1,它能将p的内容发送给该地址,随后再对Other2_Connect置1,它对应的IP没有数据接收;如果Other2_Connect先置1,该地址能接收数据,但Other1_Connect随后置1,它对应的地址又接收不到数据。
有人说UDP连续发送之间应该有足够延时,不然不能正常发送,但我将Delay_m()已经改的足够大了,还是不能连续发送,还请各位大大赐教啊,小弟就先谢谢了。。。。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-7-14 23:03:59 | 显示全部楼层
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2020-7-7
在线时间
6 小时
发表于 2020-8-4 11:50:05 | 显示全部楼层
请问问题解决了嘛
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 14:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表