gpt4 book ai didi

linux - Linux 中的套接字 - serv_addr.sin_addr.s_addr = INADDR_ANY;

转载 作者:太空宇宙 更新时间:2023-11-04 11:22:50 24 4
gpt4 key购买 nike

我正在 Linux 中进行套接字编程。有一个问题。我们怎么可能允许特定的 IP 地址连接到我们的服务器

例如:

  • 允许 10.0.0.1
  • 拒绝 10.0.0.1

我特别谈论的是我们将 INADDR_ANY 填充到我们的 sockaddr_in 结构

的代码行
serv_addr.sin_addr.s_addr = INADDR_ANY;

其余代码仅供引用:

struct sockaddr_in serv_addr;


serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY; // Here's my question!!
serv_addr.sin_port = htons(portno);

最佳答案

它被称为防火墙。在 Linux 上,您可以使用 iptables(8) 进行设置。

如果你想在你的应用程序中这样做,就不可能根据对等方的地址选择性地监听(你只能根据你的地址选择性地监听,如果你在 linux 上使用“弱端系统模型” “您必须检查您是否理解这意味着什么!---监听特定地址可能不会完全按照您的预期进行,并且不是丢弃来自不受信任接口(interface)的数据包的安全方法。)。

相反,监听 INADDR_ANY,然后在接受的 fd 上调用 getpeername(2),验证它,如果它与您的应用程序的过滤器不匹配则关闭连接。

关于linux - Linux 中的套接字 - serv_addr.sin_addr.s_addr = INADDR_ANY;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16923530/

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