0
A
回答
1
從MSDN:http://msdn.microsoft.com/en-us/library/ms739168(v=vs.85).aspx
一種用於SOMAXCONN積壓值是指示負責套接字s的基礎服務提供給設置掛起到最大合理值連接的隊列的長度的特殊恆定。
在Windows套接字2上,此最大值默認爲較大值(通常爲幾百或更多)。在藍牙應用程序中調用listen函數時,強烈建議將backlog參數(通常爲2至4)的值用得更低,因爲只有少數客戶端連接被接受。這會減少分配給偵聽套接字使用的系統資源。同樣的建議適用於只有少數客戶端連接的其他網絡應用程序。
監聽功能通常由一次可以有多個連接請求的服務器使用。如果連接請求到達並且隊列已滿,則客戶端將收到錯誤並顯示WSAECONNREFUSED。
由於此隊列位於應用程序空間之外,即OS和應用程序之間,TCP服務器是多線程的事實並不相關。
0
瞭解這個概念;請考慮以下示例:
您知道TCP執行三方握手進行連接。當遠程客戶端連接到您的TCP服務器時,它發送SYN數據包,並且您的服務器使用SYN-ACK數據包進行回覆,然後該遠程客戶端再次發送ACK數據包,然後建立連接。因此,您的應用程序在完全建立時即可獲得連接。 因此,直到您的連接完成了一半(我的意思是您已經從遠程客戶端收到SYN,並且您已發送SYN-ACK並且您正在等待最後的ACK),那麼您的應用程序將不會接受連接。因此,可能有許多遠程客戶端嘗試連接到您的服務器,並且您的監聽隊列中可能會有很多半連接的連接。
我希望它解釋了監聽隊列。
相關問題
- 1. TCP多線程服務器
- 2. GMainLoop和TCP監聽線程
- 3. C中的多線程TCP服務器
- 4. Python中的多線程TCP服務器
- 5. C#中的多線程TCP服務器?
- 6. tcp多線程服務器java
- 7. 多線程TCP服務器python
- 8. WCF監聽服務總線
- 9. TCP監聽器停止監聽
- 10. 如何使兩個服務器監聽MSMQ隊列
- 11. Delphi中的TCP監聽器
- 12. 有什麼更好的方法來監聽多線程服務?
- 13. 如何限制多發佈服務器無法使用NServiceBus監聽SAME隊列?
- 14. Android多線程與事件監聽器
- 15. WCF服務監聽器
- 16. 簡單的TCP監聽器線程爲Android ..我沒有連接
- 17. 停止TCP監聽器
- 18. 線程監聽器通知
- 19. 線程輸出監聽器
- 20. 線程創建監聽器
- 21. 在隊列上監聽Windows Server Service Bus(WSSB)1.1的WCF服務
- 22. 如何在JEE服務器(Wildfly)的JMS臨時隊列中創建監聽器?
- 23. 如何知道tcp服務器是否處於監聽狀態
- 24. C#簡單的TCP服務器線程
- 25. 併發SQS隊列監聽器
- 26. JMS隊列與2個監聽器
- 27. C程序中的多線程TCP服務器
- 28. TCP線程服務器/客戶端
- 29. 關閉TCP線程服務器
- 30. 線程每請求TCP服務器
謝謝拉爾夫和Tayyab ... – footloose 2011-03-27 21:07:03
如果我錯了,糾正我。 (示例)如果我有一個5的偵聽隊列,並且有9個客戶端試圖連接(併發)到服務器,則4個將被拒絕。所以,這個隊列指定了多少監聽操作可以排隊。線程的數量與這個隊列無關。 – footloose 2011-03-27 21:16:41
是的你是對的。如果您的隊列限制爲5,並且在服務器端有5個或更多連接正在進行握手,則下一次連接將被拒絕。線程數量僅在應用程序級別上,而此隊列在TCP驅動程序中。隊列函數在應用程序/線程開始知道該傳入連接之前進行。 – Tayyab 2011-03-31 11:40:28