首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UDP广播地址127.255.255.255

UDP广播地址127.255.255.255
EN

Stack Overflow用户
提问于 2013-09-22 00:18:05
回答 2查看 9.5K关注 0票数 5

我见过一些人说UDPSocket广播到127.255.255.255。

1)这有什么特别的?

代码语言:javascript
复制
   127.*.*.*` network?

2)如果我的客户端系统不在这个127.*.*.*网络中,并且我不知道它们在哪个网络上,那么我应该使用什么广播地址,以便客户端可以接收消息。

3)在UDP广播过程中,我猜服务器地址并不重要,因为它是无连接传输?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-22 00:28:26

  1. 127.0.0.0/8是一个特殊的地址块,它是为环回同一台机器而保留的,它永远不应该是真正网络接口的地址。特别是,127.0.0.1是默认的localhost地址(看看Unix机器上的lo0接口)。
  2. 你永远不应该在127/8网络中有客户端系统。我不认为127.255.255.255可以发送到网络,它应该只发送到本地机器。
  3. 如果需要,客户端可以在收到响应时获得服务器地址。然后它可以使用它来保持与该服务器的通信。
票数 4
EN

Stack Overflow用户

发布于 2021-03-08 15:31:15

查看ip address的输出,我得到了以下内容:

代码语言:javascript
复制
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether ac:1f:6b:78:27:42 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 brd 192.168.1.255 scope global eno1
       valid_lft forever preferred_lft forever

正如我们所看到的,lo不包含广播标志,因此您不能在该地址(网络)上广播。

至于如何确定地址,我建议您提供一个配置文件,管理员可以在其中输入他想要用于广播的IP。我想,干净多了。但是,如果您希望以编程方式查找接口列表,则可以使用if_...()函数获取连接到每个接口的IP地址。只需跳过lo (好吧,跳过任何未设置BROADCAST标志的接口)。

为此,我编写了libaddr,这是一个显示如何列出接口的C++库。在那里,您可以使用界面中的信息。对于您在/usr/include/...文件夹中找到的文档和结构,它并不太复杂。许多工具使用该功能来监听您的计算机可用的所有网络。不过,这可能是一个安全问题。

但是,对于广播,您有几种可能性。

  1. 发送到支持BROADCAST的接口,并使用该接口的广播IP地址。通常是诸如192.168.1.255.

之类的IP

  1. 发送到255.255.255.255,这是非常丑陋和危险的。它将无处不在。

  1. 发送到224.x.x.x IP地址。然而,这样的IP可能会导致问题,因为它们的行为方式类似于255.255.255.255 (即消息到处发送)。也就是说,智能交换机可以检查哪台计算机当前正在侦听这些IP地址,从而控制向哪台计算机发送UDP数据包。如果你可以这样设置它,那就是...对我来说,智能开关还只是理论上的。

我有处理所有这些情况的eventdispatcher C++ library。UDP的代码可以在几个以udp_...开头的文件中找到,所以复制和粘贴应该很容易。如果你想使用这个库,那就有点复杂了,因为它有依赖关系(都可以在快照中找到!C++项目,所以你可以递归地使用git克隆……关于如何做所有这些的信息在主README.md中)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18934834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档