我正在尝试用C编写服务器 - 客户端套接字程序。目标是服务器在特定端口上侦听,但是在 范围的IP地址 属于相同的IP子网。此IP子网是 127.x.x.x 范围的一部分(当然不是127.0.0.1)。
需要注意几点:
我不想在服务器上为该范围内的每个IP地址打开多个套接字。这不可扩展。
任何帮助都会受到理想的赞赏。这甚至可行吗?
答案 0 :(得分:4)
您只能绑定到单个套接字上的一个地址。为什么不能绑定到INADDR_ANY并简单地拒绝任何未绑定到目标IP的数据包?或者,您可以绑定到任意端口并使用操作系统级魔法(例如iptables,bpf)将发往这些IP /端口组合的数据包重新路由到您的套接字。
答案 1 :(得分:1)
套接字API不允许绑定到子网 - 您可以绑定到一个IP或任何 IP。您可以侦听所有入站连接并拒绝那些不适用的入站连接。如果需要在同一服务器上的进程之间分配连接,请使用单个侦听套接字,并将传入连接传输到工作进程。
答案 2 :(得分:0)
您可以使用防火墙阻止所需子网外的任何人连接(在o / s级别)。您可以将套接字置于混杂模式并接受给定接口上的所有连接。我不知道你是否可以两者兼顾(在混杂模式下使用套接字并在其上运行iptables)。从本质上讲,它就像构建只侦听一个端口的数据包嗅探器一样。