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);
}
}
}
望专家解惑。 我们来探讨一下,UDP断开后,如果没有主动发起数据到接收程序,接收程序发的任何数据理论终端收不到。TCP不一样,他们建立的是连接,重新连接后,是可以直接发送的。 用的PC机和开发板进行UDP通讯吗?如若是可以在第二次进行UDP通讯的时候换一台PC进行UDP通讯测试,看看能否正常接收到开发板的回应。如果此时有回应,问题可能在上位机。
看代码问题可能是在连接PC时没有连接正确。
netconn_connect(conn, addr, port); Angel_YY 发表于 2018-3-5 17:53
用的PC机和开发板进行UDP通讯吗?如若是可以在第二次进行UDP通讯的时候换一台PC进行UDP通讯测试,看看能否 ...
谢谢提供思路,还真没这样试过,貌似不应该是电脑的问题。
页:
[1]