udp跨网段通信的实现方式

本文探讨了在局域网内发现模块的需求,分析了三种方式:p2p、ARP协议和UDP组播。由于实际网络环境限制,p2p和ARP方式存在局限。重点介绍了UDP组播的工作原理及其实现,通过Boost.ASIO的示例代码展示了组播源和组播组的概念。同时提到了通过计算网段进行广播的另一种跨网段通信方式,但效率可能较低。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近一直在研究局域网发现活跃主机的demo,没做之前,感觉水不深,做了之后,差点没淹死。。。。。

需求是这样的:现在要开发一种模块,模块的MAC地址出厂的时候已经写好,但是IP地址可以由客户随便设置。现在的要求是只要模块一接上网线,无聊其IP设置为什么,都可以通过上位机软件通过局域网将其搜索出来。

方式一:采用 p2p方式,编写一个服务端程序和客户端程序,客户端程序自动向服务端报告本机IP和mac地址,由服务端进行服务调度,实现局域网发现;

方式二:采用arp协议,对局域网内活动的主机进行发现,这种方式主要是通过对局域网内的arp捕获,分析处理arp包的内容进行判断,实现局域网发现;

方式三:采用组播的方式,客户端所有主机都自动加入到组播中,在组播中,凡是存在的IP都是活跃折,实现局域网发现。

 

实际情况:

    采用第一种方式的话 ,需要连接到外网,很多时候,并不提供外网,所以第一种方案不可以;采用第二种方案也是有着局限性,因为arp协议是采用广播的方式进行,在没有外面的情况下,不同网段需要路由器转发,但路由器默认过滤广播包,所有,只有最终路由器才知道目的IP的MAC地址,如果进行跨网段通信的话,需要特定支持跨网段通信的路由器。

下面详细来说下udp组播方式如何实现的:

 &nb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值