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. C中的多線程TCP服務器
- 3. 多線程TCP服務器python
- 4. TCP監聽器停止監聽
- 5. 如何使兩個服務器監聽MSMQ隊列
- 6. Android多線程與事件監聽器
- 7. 簡單的TCP監聽器線程爲Android ..我沒有連接
- 8. 在隊列上監聽Windows Server Service Bus(WSSB)1.1的WCF服務
- 9. 如何在JEE服務器(Wildfly)的JMS臨時隊列中創建監聽器?
- 10. 併發TCP服務器使用線程
- 11. 無線監聽器
- 12. 數量多線程的TCP服務器的併發連接
- 13. Android服務器請求監聽器
- 14. C#套接字監聽器(服務器)
- 15. Android Intent服務的位置監聽器
- 16. .NET中是否有多線程的TCP服務器套接字?
- 17. 用於多線程TCP服務器的TCPStream類
- 18. 帶POCO C++庫的多線程TCP服務器
- 19. 爲什麼我們使用NetMessagingBinding監聽Azure服務總線隊列的服務會停止接收消息?
- 20. 另一個線程的監聽器
- 21. Java的TCP監聽環
- 22. C#中TCP服務器的TCP客戶端線程中斷#
- 23. Laravel監聽器監聽多個事件
- 24. Python Gevent共享隊列(監聽器進程)
- 25. 多線程隊列的java
- 26. Python的多線程隊列
- 27. Python。多線程套接字TCP服務器
- 28. 多線程TCP服務器:java.net.SocketException:套接字關閉
- 29. 關閉持續TCP Con。 (C多線程服務器)
- 30. 在多線程TCP服務器中使用Listen()sys調用
謝謝拉爾夫和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