我已經使用SO_REUSEADDR
有我的服務器被終止重新啓動,並抱怨套接字已被使用。我想知道是否有其他用途SO_REUSEADDR
?有沒有人用上述目的以外的套接字選項?SO_REUSEADDR的用法?
13
A
回答
20
對於TCP:,主要目的是在同一個地址上重新啓動關閉/關閉的進程。
該標誌是必需的,因爲端口進入TIME_WAIT狀態以確保所有數據都被傳輸。
如果兩個套接字綁定到相同的接口和端口,並且是同一個多播組的成員,則數據將被傳遞到兩個套接字。
我猜測另一種用法是試圖攔截數據的安全攻擊。
(Source)
對於UDP: SO_REUSEADDR用於組播
多於一個進程可能如果綁定結合 相同SOCK_DGRAM UDP端口() 是前面是:
int one = 1; setsockopt的(襪子, SOL_SOCKET,SO_REUSEADDR,&一個, 的sizeof(之一))
在這種情況下,每個傳入的多播 或廣播UDP數據報註定 共享端口被遞送到綁定到端口的所有 插座。
(Source)
+2
需要說明。監聽端口不會進入TIME_WAIT,但可以接受連接。 TIME_WAIT不能保證所有的數據都被傳輸,這是爲了避免混淆同一端點之間的後續連接。 – EJP 2013-01-02 06:32:02
5
的另一個主要用途是允許多個套接字到bind()
到UDP相同的端口。您可能不會想到會出現這種情況,但有時多個應用程序可能需要使用給定的端口號監聽廣播/多播地址。它還允許綁定到通配符地址,同時綁定到特定的地址。例如,Apache可能綁定到*:80和10.11.12.13:80
相關問題
- 1. C++ gsoap SO_REUSEADDR
- 2. C API插座SO_REUSEADDR
- 3. 使用帶EventMachine的SO_REUSEADDR(通過UDP)
- 4. 與SO_REUSEADDR綁定()失敗
- 5. 爲什麼SO_REUSEADDR不能用於multiprocessing.Listener?
- 6. Winsock:與SO_REUSEADDR的奇怪衝突
- 7. 插座,其屬性和SO_REUSEADDR選項
- 8. 每個人都必須同意SO_REUSEADDR嗎?
- 9. SO_REUSEADDR選項會影響分段?
- 10. 使用SO_REUSEADDR - 先前打開的套接字會發生什麼?
- 11. 爲什麼不在Unix的TCP/IP服務器上使用SO_REUSEADDR?
- 12. SO_REUSEADDR與UDP數據報 - 資源不可用
- 13. SO_REUSEADDR在Linux上使用UDP套接字。有必要嗎?
- 14. TIME-WAIT Assassination和SO_REUSEADDR之間的區別是什麼
- 15. 如何在zmq :: setsockopt()中設置SO_REUSEADDR選項(如果可能)或任何解決方法?
- 16. 爲什麼tcp套接字地址可以在不設置SO_REUSEADDR的情況下直接重用?
- 17. 變換語法的用法
- 18. ProcessBuilder.directory()方法的用法
- 19. sys.stdout.flush()方法的用法
- 20. ValidationMessage的用法
- 21. SetProcessWorkingSetSize的用法
- 22. catch_backtrace的用法
- 23. CFPropertyList的用法
- 24. setuid的用法?
- 25. RestTemplate的用法
- 26. sendBroadcast()的用法
- 27. springdoclet的用法?
- 28. snmpenum的用法
- 29. PHAssetResourceManager的用法?
- 30. gluUnProject的用法
謝謝,我想知道完全一樣的東西。相關問題:爲什麼SO_REUSEADDR不是默認的? – 2009-02-23 15:33:03