完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
有谁知道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; } |
|
相关推荐
1个回答
|
|
在解释为什么加入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. 如果问题仍然存在,检查网络环境和配置,确保多播数据包可以正确地在网络中传输。 希望这些信息能帮助你解决问题。如果还有其他问题,请随时提问。 |
|
|
|
只有小组成员才能发言,加入小组>>
1153 浏览 1 评论
584浏览 6评论
480浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
465浏览 5评论
466浏览 4评论
441浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 21:52 , Processed in 0.817588 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号