比如我的机器是192.168.0.22,那么bind函数中的sockaddr.sinaddr是否可以不是192.168.0.22,当然也不是127.0.0.1什么的.能够说明原理最好.谢谢
2 回答
UYOU
TA贡献1878条经验 获得超4个赞
bind的意义是将已经建立的“空白的”socket绑定在网络上让大家在需要时能够找得到。如果不是把socket绑定在自己的机器上,而是另外一台机器,无法想象在实际中将如何运作。我们先假设系统允许这么做,那么当网络上的其他用户请求你的服务时,他们找到的是另外那台机器,但是那台机器还是要设法连到你的本机上才能让你的socket接受请求并提供服务,但这岂不是多此一举?
另外,使用bind并不需要去设定本机IP,只要将地址字段清零,系统就自动实现本机IP的绑定了。
料青山看我应如是
TA贡献1772条经验 获得超8个赞
您好,是的。必须是本机存在的IP地址。另外人家设计这个函数的意图是为了多IP的场景,真正的服务器上,可能存在着多个IP地址,您有可能只在某个指定IP地址上或者全部IP上提供服务,这时候就需要您来设置了。
添加回答
举报
0/150
提交
取消