打印
[应用相关]

请问不跑系统的UDP发送和接收为什么必须要执行一个接收的函数?

[复制链接]
280|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
classroom|  楼主 | 2024-7-31 19:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目前在做UDP发送和接收相关的事情,但是我在进行UDP发送的时候必须要执行一个接收的函数,这个为什么?目前我的mcu只发送数据,不需要接收数据,为何还要执行那个接收的函数。
部分具体代码如下:
    IP4_ADDR(&fsl_netif0_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£ºHellon";  
   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_RAMn");  
   }  
         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!n");
         }
   ethernetif_input(&fsl_netif0);

}


为什么需要 ethernetif_input(&fsl_netif0)这个接收函数,如果不要发送不成功。

使用特权

评论回复
沙发
一秒落纱| | 2024-8-21 21:49 | 只看该作者
在UDP(用户数据报协议)通信中,发送和接收数据是两个独立的操作。

使用特权

评论回复
板凳
一秒落纱| | 2024-8-21 21:49 | 只看该作者
在UDP(用户数据报协议)通信中,发送和接收数据是两个独立的操作。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

418

主题

2023

帖子

1

粉丝