我不理解绑定socket到除127.0.0.1(或::1等)以外的任何地址的含义。
按照定义,难道我不是将socket绑定到本地机器上的端口吗?也就是localhost?
那么绑定或监听另一台机器或IP地址的端口有什么意义呢?
从概念上讲,这对我来说毫无意义!
(这在Google上被证明是非常困难的...可能是因为我没有搜索到正确的术语。)
我不理解绑定socket到除127.0.0.1(或::1等)以外的任何地址的含义。
按照定义,难道我不是将socket绑定到本地机器上的端口吗?也就是localhost?
那么绑定或监听另一台机器或IP地址的端口有什么意义呢?
从概念上讲,这对我来说毫无意义!
(这在Google上被证明是非常困难的...可能是因为我没有搜索到正确的术语。)
将套接字绑定到地址和端口以在此套接字上接收数据(大多数情况下)或在发送数据时使用此地址/端口作为数据源(例如在FTP服务器中与数据连接一起使用)。
通常,特定计算机上有几个接口,例如伪接口回环,其中计算机可以访问自己,以太网、WLAN、VPN等。每个接口都可以分配多个IP地址。例如,回环通常具有127.0.0.1和IPv6的::1,但您也可以分配其他地址。以太网或WLAN具有本地网络上的IP地址,例如172.16.0.34或其他地址。
如果将用于接收数据的套接字绑定到特定地址,则仅能接收发送到此特定IP地址的数据。例如,如果绑定到127.0.0.1,则仅能从自己的系统接收数据,而不能从本地网络上的其他系统接收数据,因为它们无法向您的127.0.0.1发送数据:首先,任何发送到127.0.0.1的数据都会发送到他们自己的127.0.0.1,其次,您的127.0.0.1是内部回环接口上的地址,无法从外部访问。
您还可以将套接字绑定到一个通配地址,例如0.0.0.0(IPv4)和::(IPv6)。在这种情况下,它不绑定到特定的IP地址,而是能够接收发送到计算机上任何IP地址的数据。
INADDR_ANY
以外的任何IP地址,其中“其他”包括localhost
,意味着它只会接受连接到该IP地址的请求。 - user207421