我不明白对<{em>}的含义到bind
套接字到127.0.0.1(或:: 1等)以外的任何地址。
我不是 - 按照定义 - 将套接字绑定到我自己的机器上的端口..这是localhost?
绑定或收听另一台机器或IP地址的端口有什么意义?
从概念上讲,它对我来说没有意义!
(事实证明这对谷歌来说太难了......可能是因为我没有用Google搜索合适的条款。)
答案 0 :(得分:30)
套接字的绑定用于寻址和端口,以便在此套接字上接收数据(大多数情况下)或在发送数据时使用此地址/端口作为数据源(例如,与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地址的数据。