STM32
直播中

张英

8年用户 1443经验值
私信 关注
[问答]

STM32F429以太网UDP通讯异常的原因?怎么解决?

专家好:
      目前正在调试STM32F429的以太网,项目使用的是FreeRTOS+LWIP模式,创建工程使用的是cubemx,使用的开发板是nucleo-144,目前正在调试以太网部分。测试用程序是简单的echo程序,TCP模式没发现任何问题,即使开2个TCP线程都没问题;测试UDP模式时发现,第一次建立UDP连接后发送数据到开发板能够正常收到开发板的回应,当断开连接然后重新建立连接后则不能够收到开发板的回应。程序如下:
static void udpecho_thread(void *arg)
{
  err_t err,recv_err;
  struct netconn *conn;
  struct netbuf *buf;
  ip_addr_t *addr;
  unsigned short port;

  conn = netconn_new(NETCONN_UDP);
  if (conn!= NULL)
  {
    err = netconn_bind(conn, IP_ADDR_ANY, 7);
    if (err == ERR_OK)
    {
      while (1)
      {
        recv_err = netconn_recv(conn,  buf);
      
        if (recv_err == ERR_OK)
        {
          addr = netbuf_fromaddr(buf);
          port = netbuf_fromport(buf);
          netconn_connect(conn, addr, port);
          buf->addr.addr = 0;
          netconn_send(conn,buf);
          netbuf_delete(buf);
        }
      }
    }
    else
    {
      netconn_delete(conn);
    }
  }
}


回帖(1)

李童

2024-4-29 15:11:06
UDP断开后,如果没有主动发起数据到接收程序,接收程序发的任何数据理论终端收不到。TCP不一样,他们建立的是连接,重新连接后,是可以直接发送的。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分