套接字,传输类型,端口号,IP之间的关系

时间:2014-03-31 23:05:37

标签: linux sockets ports

据我所知,套接字只是文件的数据结构。这是否意味着为不同的IP,PORTNUMBER和TRANSPORT TYPE(TCP / UDP)组合创建了不同的套接字DS?

我想知道以下实现是否可行

- >使一个Socket侦听2个不同的IP但相同的端口号,这样当客户端将数据发送到任何这些IP(但是相同的端口号)时,Server应该能够为它提供服务。 (或者端口号可以与2个不同的IP相关联)

- >使2进程侦听相同的端口号

1 个答案:

答案 0 :(得分:3)

  

使Socket侦听2个不同的IP但相同的端口号,以便当客户端向任何这些IP(但相同的端口号)发送数据时,Server应该能够为其提供服务。 (或者端口号可以与2个不同的IP相关联)

套接字无法侦听2 + 显式 IP地址。您只能在套接字上调用bind()一次,并且不允许您一次指定多个IP地址。但是,您可以bind()套接字到通配符IP地址(IPv4为INADDR_ANY,IPv6为IN6ADDR_ANY),这将允许套接字同时绑定到所有可用的本地IP地址时间。在这种情况下,您确实可以将数据发送到套接字绑定的任何IP地址上的相同端口。

  

让2个进程侦听相同的端口号

仅当每个进程绑定到不同的IP地址且不使用通配符IP时,才可以执行此操作。如果您有多个进程在同一IP和端口上进行侦听,他们如何知道哪个进程应该处理哪些数据?他们不会,所以操作系统首先不允许它。

相关问题