环境:rt-thread 4.1.1,lwip 2.0.3
#define LWIP_NETIF_LOOPBACK 0
#define LWIP_HAVE_LOOPIF 1
#define LWIP_LOOPBACK_MAX_PBUFS 8
#define LWIP_NETIF_LOOPBACK_MULTITHREADING 1
目前我正在测试内部 udp 服务器功能,我创建了 1 个 udp 服务器任务并侦听每个网络接口,然后创建了 2 个 udp 客户端任务并广播到环回地址 127.0.0.1 和 127.0.0.2。
但不幸的是,udp服务器没有收到数据包。
如果我将环回地址 127.0.0.1 替换为设备的本地地址,它就可以工作。
server:
if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
{
LOG_E("Create socket error");
goto __exit;
}
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = IPADDR_ANY;
server_addr.sin_port = htons(MB_UDP_PORT);
rt_memset(&(server_addr.sin_zero), 0, sizeof(server_addr.sin_zero));
if (bind(sock, (struct sockaddr *) &server_addr, sizeof(struct sockaddr)) == -1)
{
LOG_E("Unable to bind");
goto __exit;
}
client:
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
rt_memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_addr.s_addr = IPADDR_LOOPBACK;
servaddr.sin_port = htons(MB_UDP_PORT);
servaddr.sin_family = AF_INET;
if (connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0)
{
LOG_I("\n Error : Connect Failed \n");
goto __exit;
}
我尝试了配置,但没有成功