问答对人有帮助,内容完整,我也想知道答案
0
有谁知道IGMP_Join后发送数据包需要什么
似乎在加入IGMP组后,数据包不再通过UDP发送。
在下面的示例中,第一个数据包总是被发送出去,但第二个数据包不会被发送出去。
提前致谢!!
静态整ICACHE_FLASH_ATTR igmp_join(uint32_t ip) {
if( ip )
{
ip_addr_t ipgroup;
int ret;
ipaddr_aton(MULtiCAST_ADDR, & ipgroup);
os_printf("IGMP Joining: %08x %08x, " , ip, ipgroup.addr);
espconn_sendto(&HTTPUDPptrespconn, UDPResponse, os_strlen(UDPResponse)); //Send Back Answer
ret = espconn_igmp_join( (ip_addr_t *) & ip, & ipgroup); //At this point SendTo stops
espconn_sendto(&HTTPUDPptrespconn, UDPResponse, os_strlen(UDPResponse)); //Send Back Answer
if (ret != 0)
{
os_printf( " failed, code %dn " , ret);
} else {
os_printf( " joinedn " );
}
return 0;
}
os_printf( " Failed to obtain current IPn " );
return 1;
}
0
2024-7-10 07:20:28
评论
淘帖0
邀请回答
您可以邀请以下用户,快速回答问题
×
wang21cj
该类别下有 38 个回答。
邀请回答
hgimtk
该类别下有 38 个回答。
邀请回答
新星之火12138
该类别下有 33 个回答。
邀请回答
zyh34997
该类别下有 32 个回答。
邀请回答
就好国dd
该类别下有 32 个回答。
邀请回答
chm5
该类别下有 32 个回答。
邀请回答
heks
该类别下有 31 个回答。
邀请回答
zaichenxi
该类别下有 31 个回答。
邀请回答
flowerddd
该类别下有 29 个回答。
邀请回答
muwersddg
该类别下有 29 个回答。
邀请回答
四川赵赵
该类别下有 29 个回答。
邀请回答
星星公交站
该类别下有 28 个回答。
邀请回答
vinww特烦恼
该类别下有 28 个回答。
邀请回答
caosurround
该类别下有 28 个回答。
邀请回答
gvjhvbc
该类别下有 27 个回答。
邀请回答
安德森大
该类别下有 27 个回答。
邀请回答
xwgc888
该类别下有 27 个回答。
邀请回答
lkjflksjfsa
该类别下有 27 个回答。
邀请回答
h1654155143.8331
该类别下有 27 个回答。
邀请回答
723662364d
该类别下有 27 个回答。
邀请回答
举报
李辉
相关推荐
• 为什么LWIP + ENC28J60 + 组播不能发送组播数据?
2836
• 如何在没有收到另一个udp数据包的情况下简单地发送一个udp数据包?
502
• 怎么从PIC32MZ直接发送UDP数据包?
1665
• 如何强制ESP32-S2向Station和SoftAP接口发送UDP广播数据包?
558
• 如何利用STM32F103ZET6+ENC28J60+LWIP实现UDP组播?
5565
• NONOS如何检查是否实际发送了UDP数据包?
866
• LWIP UDP数据包长度为什么不一样?
2214
• UDP广播数据包并不总是发送的原因?怎么处理?
619
• 使用STM32H7发送和接收UDP数据包时会出现破损现象怎么解决?
701
• 为什么ESP时不时会丢失UDP数据包?
743
提交评论
1个回答
答案对人有帮助,有参考价值
0
在解释为什么加入IGMP组后,数据包不再通过UDP发送之前,我们首先需要了解一些基本概念。
IGMP(Internet Group Management Protocol,互联网组管理协议)是一种用于管理主机组成员的协议。它允许主机加入或离开多播组,以便接收特定多播组的数据包。多播是一种网络传输方式,允许一个数据包同时发送给多个接收者。
UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、不可靠的传输层协议,它允许应用程序在不需要建立连接的情况下发送数据包。
现在我们来分析你的问题。在加入IGMP组之后,数据包不再通过UDP发送的原因可能有以下几点:
1. 加入IGMP组后,数据包的传输方式可能已经从单播(unicast)或广播(broadcast)变为多播(multicast)。在这种情况下,数据包不再通过UDP发送,而是通过多播传输。
2. 在你的示例代码中,`igmp_join` 函数用于将主机加入到一个多播组。但是,这个函数本身并不负责发送数据包。数据包的发送应该在其他部分的代码中实现。因此,如果第二个数据包没有被发送出去,可能是因为发送数据包的代码没有正确执行。
3. 如果你希望在加入IGMP组后继续使用UDP发送数据包,你需要确保在发送数据包时使用正确的目标IP地址和端口。在多播环境中,你可能需要使用特定的多播地址和端口,而不是单播地址。
为了解决你的问题,你可以尝试以下步骤:
1. 确保在加入IGMP组后,发送数据包的代码仍然正确执行。检查是否有任何条件或逻辑错误导致第二个数据包没有被发送。
2. 如果你希望在多播环境中继续使用UDP发送数据包,请确保使用正确的多播地址和端口。你可以在发送数据包之前,将单播地址替换为多播地址。
3. 如果问题仍然存在,检查网络环境和配置,确保多播数据包可以正确地在网络中传输。
希望这些信息能帮助你解决问题。如果还有其他问题,请随时提问。
2024-7-10 17:50:21
评论
举报
1652711011.026500
提交评论
只有小组成员才能发言,加入小组>>