我目前正在編寫一個C#程序,它具有與wireshack類似的功能,使用SharpPcap捕獲數據包並使用PacketDotNet獲取有關數據包的信息。我想知道如何獲得與數據包關聯的進程的名稱?SharpPcap獲取進程名稱
1
A
回答
2
您可以通過從netstat -o
解析輸出得到ProcessId
然後從Process.GetById
得到進程名。
可能是這樣的代碼將是有益的,但我不是很強勁,正則表達式:)
var proc = new Process {
StartInfo = new ProcessStartInfo {
FileName = "netstat",
Arguments = "-on",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
proc.Start();
Regex r = new Regex(@"\S+\s+(?<address>\S+)\s+\S+\s+\S+\s+(?<pid>\d+)");
while (!proc.StandardOutput.EndOfStream) {
var res = r.Match(proc.StandardOutput.ReadLine());
if (res.Success) {
var pid = int.Parse(res.Groups["pid"].Value);
var address = res.Groups["address"].Value;
Console.WriteLine("{0} - {1}", address, Process.GetProcessById(pid).ProcessName);
}
}
+0
這真的是唯一的選擇嗎?在確定哪個瀏覽器正在使用端口80時,我不認爲這會工作得很好? – Nuzzolilo 2014-03-20 04:48:00
+0
不能肯定地說,但我認爲你也可以嘗試使用[TcpView](http://technet.microsoft.com/en-US/sysinternals/bb897437.aspx),它具有圖形界面和命令行工具與netstat非常相似 – user20140268 2014-03-21 10:53:58
相關問題
- 1. Sharppcap - 如何獲取traffiqued文件名?
- 2. 從進程名稱獲取應用程序名稱
- 3. 如何從進程名稱獲取應用程序名稱?
- 4. 通過PID獲取進程名稱
- 5. 獲取進程名稱窗口標題名稱和安裝的軟件名稱
- 6. 從進程ID獲取進程名稱(win32)
- 7. 如何從進程名稱獲取進程ID?
- 8. 從進程ID獲取進程可執行文件名稱
- 9. 按進程名稱獲取進程句柄
- 10. 獲取程序集名稱
- 11. 如何從android中的進程獲取應用程序名稱?
- 12. Volume Mixer - 獲取應用程序名稱及其進程ID
- 13. 如何在Windows中獲取進程的應用程序名稱?
- 14. 如何獲取應用程序的進程名稱?
- 15. 如何獲取所有線程ID和進程的名稱
- 16. Coldfusion進程名稱
- 17. 如何通過在mac os上了解進程名稱來獲取進程?
- 18. 按名稱獲取
- 19. 如何從PID使用C獲取進程名稱
- 20. 獲取進程名稱,從netstat命令,而SunOS
- 21. 按名稱獲取正在運行的進程的路徑
- 22. 我如何從進程ID獲取服務的名稱?
- 23. AppleScript:從應用隱藏/獲取進程名稱
- 24. 從pid或句柄獲取進程名稱
- 25. 獲取當前進程中所有句柄的名稱
- 26. linux在內核中從pid獲取進程名稱
- 27. 如何在Mac OS上按名稱獲取進程?
- 28. C++獲取Windows標題使用進程名稱
- 29. Linux/Bash,使用ps -o按特定名稱獲取進程?
- 30. 如何獲取C#中的開放端口的進程名稱?
請包括一些示例代碼,以幫助解釋的問題! – PearsonArtPhoto 2013-03-10 11:32:18