目前在做UDP发送和接收相关的事情,但是我在进行UDP发送的时候必须要执行一个接收的函数,这个为什么?目前我的mcu只发送数据,不需要接收数据,为何还要执行那个接收的函数。
部分具体代码如下:
IP4_ADDR(&fsl_ne
tif0_ipaddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3);
IP4_ADDR(&fsl_netif0_netmask, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3);
IP4_ADDR(&fsl_netif0_gw, configGW_ADDR0, configGW_ADDR1, configGW_ADDR2, configGW_ADDR3);
lwip_init();
netif_add(&fsl_netif0, &fsl_netif0_ipaddr, &fsl_netif0_netmask, &fsl_netif0_gw, NULL, ethernetif_init, ethernet_input);
netif_set_default(&fsl_netif0);
netif_set_up(&fsl_netif0);
udpecho_raw_init();
初始化完成后就发数据:
struct pbuf *q = NULL;
const char* senddata = "senddata£ºHello
";
struct udp_
PCB *upcb;
err_t stus;
upcb = udp_new();
udp_bind(upcb, IP_ADDR_ANY, 7);
q = pbuf_alloc(PBUF_TRANSPORT, strlen(senddata)+1, PBUF_ROM);
if(!q)
{
PRINTF("out of PBUF_RAM
");
}
q->payload = (void *)senddata;
while (1)
{
/* Poll the driver, get any outstanding frames */
stus=udp_sendto(upcb, q, &fsl_netif0_gw, 8080);
if(stus ==ERR_OK)
{
PRINTF("send sucessful!
");
}
ethernetif_input(&fsl_netif0);
}
为什么需要
ethernetif_input(&fsl_netif0)这个接收函数,如果不要发送不成功。
当接收到网络数据后,也打印出来,看看是否跟你的目标通信地址相同。
我估计应该是不一样的。
一周热门 更多>