LWIP UDP 接收广播再发送出去
请教大家,我使用 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段 */
}
}
请大神们帮忙看看~!
目前能接收到 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段 */
}
}
请大神们帮忙看看~!
...全文
相关推荐
LWIP裸机实现TCPUDP通讯
LWIP裸机实现TCPUDP通讯,使用STM32开发板,网卡使用ENC28J60
STM32CubeIDE H743 + DP83848 + LWIP-UDP服务器跨网段传输数据
STM32 LWIP UDP通讯,实现跨网段传输数据 UDP广播主机192.168.50.123:5003, UDP服务器192.168.1.20:1001 两者之间可以互传数据
LWIP应用指南参考
LWIP应该指南参考,LWIP版本1.3.0。有TCP客户端试验、WEB客户端试验、UDP客户端试验、UDP服务器试验。
STM32F4上使用TCP和UDP的例程
这个是在STM32F4上使用TCP和UDP的例程,通过LWIP协议进行Socket通讯,有需要的可以下载。
用于广播的SOCKET类MulticastSocket_Demo.rar_DEMO_MulticastSocket_lwip U
该程序包含一个用于广播的Socket派生类和一个演示实例!


