回答
是的,它是非常可能的多個進程使用fork()偵聽相同的端口。
事實上,當需要接收來自大量客戶端的消息時,大多數Web服務器都使用它來提高性能。
只需創建監聽程序&即可分叉進程。現在所有進程都將在同一個端口上進行偵聽。現在,他們如何將傳入的請求彼此分開完全取決於操作系統,就像在Solaris中一樣,請求按循環方式在進程間分配。
但是對於您的場景,您可以使用套接字複用(select())來獲得所需的結果。
要知道一個事實,即'接受()'可能會失敗! – 2014-10-19 17:42:31
何時以及如何接受可以失敗的朋友.....我已經使用了他們多次。接受我從未失敗。 Yup select可以超時但這不是問題。 – Khanjarrr 2014-10-19 18:39:19
從技術上講,read-ready通知會同時到達兩個進程,但只有一個套接字會被accept()編輯,讓另一個套接字得到一個錯誤代碼「EAGAIN」。 該評論更上面作爲OP的說明:) – 2014-10-19 19:32:45
- 1. 上偵聽UDP套接字
- 2. 多UDP套接字偵聽同一端口上的特定源
- 3. 創建多個偵聽套接字
- 4. 在同一端口上偵聽多個進程?
- 5. 允許多個套接字在同一端口上偵聽有什麼好處?
- 6. 監聽套接字只偵聽一次
- 7. 在多個進程之間協調對共享偵聽套接字的接受
- 8. 使用BINDTODEVICE時無法在多個套接字上偵聽?
- 9. Linux服務在多個套接字上偵聽
- 10. 偵聽多個套接字:選擇與多線程
- 11. 在偵聽套接字上的Listening套接字上接受連接(並且不再偵聽)?
- 12. Android多播套接字停止偵聽
- 13. 一個偵聽套接字必須在線程中運行嗎?
- 14. Linux套接字終止偵聽線程
- 15. MultiSocket偵聽Linux套接字編程
- 16. 清漆在同一接口上偵聽多個IPv6地址
- 17. 共享偵聽套接字的多個進程:當新進程進入時,爲什麼舊進程停止?
- 18. 創建兩個線程同時偵聽兩個套接字連接。
- 19. 偵聽套接字連接,而不接受在Linux上調用
- 20. 在多個套接字(InputStreamReader)上進行監聽
- 21. C:pthread無法在套接字上偵聽,綁定和接受
- 22. 單獨線程上的異步套接字偵聽器 - VB.net
- 23. Java套接字問題,不會偵聽多個數據報包
- 24. Python套接字服務器:偵聽多個客戶端
- 25. 調查TCP套接字空閒偵聽
- 26. 試圖啓動偵聽器套接字
- 27. 偵聽套接字超時(Windows)
- 28. 偵聽所有內容的套接字
- 29. Android - 不斷偵聽UDP套接字
- 30. Java TCP套接字偵聽器
我認爲[這個答案] [1]應該涵蓋你的大部分問題。 [1]:http://stackoverflow.com/a/670897/2346527 – 2014-10-17 12:48:38