我正在Linux中进行Socket编程。有一个问题。 我们如何允许特定的IP地址连接到我们的服务器。
例如:
我正在专门讨论这行代码,我们将 INADDR_ANY 填入 sockaddr_in struct
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);
答案 0 :(得分:1)
它被称为防火墙。在linux上,您可以使用iptables(8)
进行设置。
如果你想在你的应用程序中执行它,就不可能根据对等方的地址有选择地进行监听(你只能根据你的地址有选择地监听,如果你在Linux上使用“弱端系统模型” “你必须检查一下你是否理解这意味着什么!---监听特定地址可能并不完全符合你的预期,也不是从不受信任的接口丢弃数据包的安全方法。”。
相反,请听取INADDR_ANY,然后在接受的fd上调用getpeername(2)
,验证它,如果它与您的应用程序的过滤器不匹配,请关闭连接。