gpt4 book ai didi

c++ - 如何知道 Linux 服务器上的 IP 地址是否为本地

转载 作者:太空宇宙 更新时间:2023-11-04 04:09:02 25 4
gpt4 key购买 nike

我们正在Linux上使用C/C++开发一个服务器软件,该软件会限制来自Internet的请求的下载速率,但对于来自本地计算机(内联网)的请求不会设置任何限制。

问题是如何判断IP地址是否是本地的,是否可以通过c/c++通过读取一些网络号设置(也许来自路由器?)来做到这一点?

更新
当我说本地ip时,我的意思是它来自公司内部。例如,假设公司有三个子网(该公司只有一条DSL链路连接到互联网),分别是10.123.1.xxx、172.16.1.xxx和192.168.1.xxx,那么这三个子网中的所有IP地址都应被视为本地地址。

最佳答案

私有(private)地址范围是:

10.0.0.0 - 10.255.255.255 (10/8 prefix)

172.16.0.0 - 172.31.255.255 (172.16/12 prefix)

192.168.0.0 - 192.168.255.255 (192.168/16 prefix)

您可能还想过滤掉链接本地地址 (169.254/16)

然后,您可以解析代码中的 IP 地址(要获取可以使用 avahi 或类似工具的地址,并将所有地址保存到文件中,然后单独解析每个地址)并检查它是否与这些地址匹配。如果没有,则限制其连接

编辑

您还可以考虑使用 getifaddrs列出本地地址的函数

关于c++ - 如何知道 Linux 服务器上的 IP 地址是否为本地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19979084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com