c - 如何检查IP地址是否对应于C中的localhost

标签 c network-programming

在 Linux 上的 C 中,是否有一种规范的方法来检查 IP 地址是否对应于本地主机?

也就是说,我正在寻找一个函数 is_localhost,如果我的计算机有一个外部 IP 为“1.2.3.4”,那么在任何一个上调用 is_localhost “localhost”、“127.0.0.1”或“1.2.3.4”应返回 true,任何其他 IP 都将返回 false。

附带说明一下,欺骗此信息有多难 - 以这种方式检查主机是否为 localhost 是否可以保证请求实际上来自这台计算机?

对于上下文,我正在为服务器编写一个管理界面。我想制作只读管理位,如查看连接列表,可通过网络使用,但对于任何危险的事情,如手动终止连接,您应该通过在服务器本身上运行脚本来完成。

谢谢!

最佳答案

我认为您可能试图以错误的方式解决您的问题 - 如果您想通过检查它是否是本地主机来限制对您的远程可访问应用程序的访问,那么检查 IP 地址将是一个非常糟糕的方法做吧。一台 PC 可以有任意数量的易于配置的网络接口(interface),这些接口(interface)具有您自己选择的 IP 地址。所以解决起来会很容易。

您可能需要考虑添加一些基本身份验证,或者只是不允许远程运行某些功能。有很多方法可以实现这一点,但我认为问题的范围在这里结束——不要依赖于检查 IP 地址。 :)

关于c - 如何检查IP地址是否对应于C中的localhost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20109009/

相关文章:

c++ - 如何在使用 GCC 时使用 __align__ 中的大小进行缓存对齐?

c - 如何使用 ICMPv6 套接字接收 vlan header /l2 header

c++ - 确定可用的上传/下载带宽

c - TCP 套接字 : Can read() still fail with EINTR when select() indicates there are data available?

sockets - 关于so​​cket编程中getaddrinfo()函数的问题

c - C中二维数组的"Direction"

c - 从结构中的指针访问结构的值

c - %u 需要 unsigned int 参数,但参数类型为 long int (4294967295)

python-3.x - 通过网络将数据并行发送到多个接收者

C:为什么指针周围有括号?