LWIP UDP 接收广播再发送出去

dengchonglin 2014-06-11 04:40:27
请教大家,我使用 LWIP 协议栈接收广播,

目前能接收到 PC 端发送的广播,但是接收到数据后再发送出去,PC端就没收到返回了。

struct udp_pcb *g_pcb;
void UDP_server_init(void)
{
g_pcb = udp_new(); //申请udp控制块
//udp_bind(pcb,IP_ADDR_ANY,UDP_LOCAL_PORT); /* 绑定本地IP地址和端口号(作为udp服务器) */
//g_pcb->so_options |= SOF_BROADCAST;
udp_bind(g_pcb,IP_ADDR_BROADCAST,UDP_LOCAL_PORT);
udp_recv(g_pcb,udp_server_recv,NULL); /* 设置UDP段到时的回调函数 */

}
udp_server_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p,struct ip_addr *addr, u16_t port)
{
struct ip_addr destAddr = *addr; /* 获取远程主机 IP地址 */
u16_t nSendPort;
if(p != NULL)
{
/******将数据原样返回*******************/
udp_sendto(pcb,p,&destAddr,port); /* 将收到的数据再发送出去 */
pbuf_free(p); /* 释放该UDP段 */
}
}

请大神们帮忙看看~!
...全文
1213 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dengchonglin 2014-06-19
  • 打赏
  • 举报
回复
udp_bind(g_pcb,IP_ADDR_BROADCAST,UDP_LOCAL_PORT); 改为 udp_bind(pcb,IP_ADDR_ANY,UDP_LOCAL_PORT); 就可以了~!
  • 打赏
  • 举报
回复
引用 6 楼 dengchonglin 的回复:
板子的 IP 是可以通过 PC ping 通的~! 我感觉应该是 板子没有把数据发出来~!
不是让你抓包吗,抓了不就知道到底有没有发出来了。
zhengbuaa 2014-06-12
  • 打赏
  • 举报
回复
抓包看一下情况。 看一下你板子的ip地址和陆游表
  • 打赏
  • 举报
回复
引用 3 楼 dengchonglin 的回复:
确认PC数据已经发送了,而且目标板也收到了数据~!
pc收到你回的包了吗?如果收到没回,可能是数据不对。如果没有收到那么有可能是设备发送没有成功。
dengchonglin 2014-06-12
  • 打赏
  • 举报
回复
板子的 IP 是可以通过 PC ping 通的~! 我感觉应该是 板子没有把数据发出来~!
dengchonglin 2014-06-11
  • 打赏
  • 举报
回复
确认PC数据已经发送了,而且目标板也收到了数据~!
  • 打赏
  • 举报
回复
PC端抓包看看,然后再分析。
91program 2014-06-11
  • 打赏
  • 举报
回复
接收到数据后再发送出去,PC端就没收到返回了:LZ 确认 PC 会回吗?LWIP 这个东东偶没有用过。 如果确认会回,可能是 PC 没有接收到设备发出的数据。设备发送数据是否成功?发送链路是否 OK 呢?

19,500

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧