关于socket bind函数是否必须是本机的IP?这个该怎么理解?

比如我的机器是192.168.0.22,那么bind函数中的sockaddr.sinaddr是否可以不是192.168.0.22,当然也不是127.0.0.1什么的.能够说明原理最好.谢谢

神不在的星期二
浏览 673回答 2
2回答

UYOU

bind的意义是将已经建立的“空白的”socket绑定在网络上让大家在需要时能够找得到。如果不是把socket绑定在自己的机器上,而是另外一台机器,无法想象在实际中将如何运作。我们先假设系统允许这么做,那么当网络上的其他用户请求你的服务时,他们找到的是另外那台机器,但是那台机器还是要设法连到你的本机上才能让你的socket接受请求并提供服务,但这岂不是多此一举?另外,使用bind并不需要去设定本机IP,只要将地址字段清零,系统就自动实现本机IP的绑定了。

料青山看我应如是

您好,是的。必须是本机存在的IP地址。另外人家设计这个函数的意图是为了多IP的场景,真正的服务器上,可能存在着多个IP地址,您有可能只在某个指定IP地址上或者全部IP上提供服务,这时候就需要您来设置了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java
JQuery