如何将套接字绑定到多个接口

Hyn*_*aha 22 sockets bind interface

在互联网上搜索了几个小时后,我仍然无法找到问题的答案.

我的任务是创建一个服务器,接受来自可变数量接口的套接字(在配置文件中给出eth0, eth1, etc.).

最简单的方法是什么?有没有办法将一个套接字绑定到多个接口?我还没有办法做到这一点.
或者,我是否必须使用INADDR_ANY并以某种方式找出数据包发送的接口?

有没有其他方法来处理这个问题?

Nik*_*sov 31

您可以使用一个套接字连接所有接口,也可以创建多个套接字并将每个套接字绑定到所需接口的IP地址.无论如何,请在套接字上设置选项.bind(2) INADDR_ANYSO_REUSEADDR

  • @Tolga,你可能指的是TCP端口号是一个16位整数的事实.这不是限制因素,因为每个给定的TCP连接是(src addr,src端口,dest addr,dest端口)的4元组.在达到65536个连接之前,您更有可能在服务器上达到每进程文件描述符限制. (4认同)