2010-08-23 81 views
4

我正在使用C#中的TcpListener類來打開新的tcp連接。我看到一些性能問題,我想看看它是否由於運行在tcp backlog上。有什麼方法可以檢查我的流程積壓的當前大小嗎?如何監控TcpListener積壓的大小?

+0

請註明你看到什麼樣的性能問題。通常,積壓限制在'listen'系統調用期間被指定,然後被內核忽略。 :-)大量積壓不應該影響你的表現。一旦積壓清除並且客戶端等待重新傳輸初始SYN,一大堆被忽略的傳入連接的短暫積壓會降低明顯的連接速度。爲了回答你明確的問題,我知道無法直接檢查當前的積壓隊列大小。 – 2011-06-15 09:23:41

+0

你找到了答案....有興趣!因爲我似乎遇到了限制 – Seabizkit 2016-01-06 06:58:55

回答

0

您可能想要使用像Wireshark這樣的實用程序(圖形化,但不能從C#,AFAIK編寫腳本)。 Wireshare使用名爲WinPcap的庫,它可以實際監視計算機上的TCP流。 HTTP頭的解碼需要在你的應用程序中完成(這是wireshark/tcpdump/windump應該能夠做到的)。您將需要使用PInvoke來調用WinPcap DLL。您可以通過執行「WinPcap PInvoke」的網頁搜索來查找庫包裝。

這個問題的聲音非常相似於以下內容:

Is there any way in .NET to programmatically listen to HTTP traffic?

此外,Capturing HTTP requests可以幫助