TCP协议属性设置之SO_REUSEADDR属性
生活随笔
收集整理的這篇文章主要介紹了
TCP协议属性设置之SO_REUSEADDR属性
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
此屬性用于設置某個端口是否允許重用。這個屬性的用處在那里呢?當我們編寫程序時監聽了一個端口,但是由于某種情況,服務器程序關閉或者一場退出。造成本地端口出現TIME_WAIT狀態時。這是當我們繼續監聽此端口時就會出現錯誤。這是設置這個屬性就顯得非常重要。當我們設置了這個屬性以后就可以繼續對此端口進行監聽。 但是這就引出了另外的一個問題,就是設置這個屬性后允許一個套接字上同時有兩個應用程序進行監聽,那系統究竟會將數據發送給哪一個程序呢?系統會將數據首先交給監聽IP最確定的應用程序。例如應用程序A在調用監聽函數時設置的屬性是addr.sin_addr.S_addr := INADDR_ANY;而另外的一個應用程序B則監聽的地址為addr.sin_addr.S_addr := inet_addr(PChar(sMainIP));同時這兩個應用程序監聽的端口都是相同的,這是系統接收到數據后會首先交給B然后再交給A。因此一般為了程序安全我們會禁止這種情況的發生。因此需要設置下面的SO_EXCLUSIVEADDRUSE屬性。 ? Delphi和C++的設置方法為: http://web1344759.web186.badudns.cc/showHtec.asp?id=238
轉載于:https://blog.51cto.com/fxh7622/516374
總結
以上是生活随笔為你收集整理的TCP协议属性设置之SO_REUSEADDR属性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redhat enterprise 5
- 下一篇: 打嗝的解决方法