毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 嵌入式 >> 正文

LWIP UDP接收广播再发送出去代码

更新时间:2014-6-20:  来源:毕业论文

我使用 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端就没收到返回了:LZ 确认 PC 会回吗?LWIP 这个东东偶没有用过。

如果确认会回,可能是 PC 没有接收到设备发出的数据。设备发送数据是否成功?发送链路是否 OK 呢? PC端抓包看看,然后再分析。 pc收到你回的包了吗?如果收到没回,可能是数据不对。如果没有收到那么有可能是设备发送没有成功。
udp_bind(g_pcb,IP_ADDR_BROADCAST,UDP_LOCAL_PORT);

改为
udp_bind(pcb,IP_ADDR_ANY,UDP_LOCAL_PORT);

就可以了~!

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。