bind端口復用(可重復綁定同ip同端口)
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
所謂綁定是指別人連接我只能通過我所綁定的端口,其實是說,你現在有這個端口開放了,人家可以連接到你的服務,也可以進行數據傳輸,但是也不一定要使用此端口進行傳輸,可能此端口只用于控制信息的傳輸 端口 = 端口 + Ip TCP 三元組 UDP 2元組 默認情況下,一個線程的棧要預留1M的內存空間,而一個進程中可用的內存空間只有2G,所以理論上一個進程中最多可以開2048個線程,但是內存當然不可能完全拿來作線程的棧,所以實際數目要比這個值要小。
端口復用最常用的用途應該是防止服務器重啟時之前綁定的端口還未釋放。這種情況下如果設定了端口復用,則新啟動的服務器進程可以直接綁定端口,直接接過前輩的槍。如果沒有設定端口復用,綁定會失敗,提示ADDR已經在使用中——那只好等等再重試了,麻煩!
1、當有一個有相同本地地址和端口的socket1處于TIME_WAIT狀態時,而你啟動的程序的socket2要占用該地址和端口,你的程序 就要用到該選項。 (這就是我說的情況啦) 2、SO_REUSEADDR允許同一port上啟動同一服務器的多個實例(多個進程)。但每個實例綁定的 IP地址是不能相同的。在有多塊網卡或用IP 3、SO_REUSEADDR允許單個 進程綁定相同的端口到多個socket上,但每個socket綁定的ip地址不同。這和2很相似,區別請看UNPv1。 4、SO_REUSEADDR允許完全相同的地址和端口的重復綁定。但這只用于UDP的多播,不用于TCP。 bind的意義是將已經建立的“空白的”socket綁定在網絡上讓大家在需要時能夠找得到。如果不是把socket綁定在自己的機器上,而是另外一臺機器,無法想象在實際中將如何運作。我們先假設系統允許這么做,那么當網絡上的其他用戶請求你的服務時,他們找到的是另外那臺機器,但是那臺機器還是要設法連到你的本機上才能讓你的socket接受請求并提供服務,但這豈不是多此一舉?另外,使用bind并不需要去設定本機IP,只要將地址字段清零,系統就自動實現本機IP的綁定了。 該文章在 2018/2/9 1:10:40 編輯過 |
關鍵字查詢
相關文章
正在查詢... |