2014-03-31 49 views
0

据我了解,套接字就像文件一样只是数据结构。这是否意味着为不同的IP,PORTNUMBER和TRANSPORT TYPE(TCP/UDP)组合创建了不同的套接字DS?插座之间的关系,传输类型,端口号,IP

我想知道,如果下面的实现是可能的

- >制作一个Socket监听2个不同的IP地址,但相同的端口号,这样,当一个客户端发送数据到任何这些IP的(但相同的端口号),服务器应该能够提供服务。 (或者可以将端口号与2层不同的IP相关联)

- >使2个过程监听相同的端口号

+0

套接字不仅仅是数据结构。它们是通信网络的端点。你偏离主题的问题是建立在谬误之上的。 – EJP

+0

是的'他们是交流的终点n/w'是我看到的每一处的短语,并且不能真正理解在编程级别的含义 – tez

回答

3

让一个Socket监听2个不同的IP地址,但相同的端口号,以便当客户端将数据发送到任何这些IP(但端口号相同),服务器应能够为其提供服务。 (或者可以将端口号与2层不同的IP相关联)

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

使2个进程相同的端口号

这仅仅是可能的,如果每个进程绑定到不同的IP地址,并没有使用通配符的IP听。如果您有多个进程监听相同的IP和端口,他们将如何知道哪个进程应该处理哪些数据?他们不会,所以操作系统首先不允许它。