比如我的機器是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
提交
取消