在我的Ubuntu计算机上,我有兴趣捕获端口20001上的流量。为了捕获该端口上的流量,我这样做:
安装tcpdump apt-get install tcpdump
运行:tcpdump -i eth0 port 20001
(我的网络接口的名称为eth0)
00:49:36.157448 IP debian.20001> 192.168.1.3.5868:UDP,长度652
00:49:36.159375 IP 192.168.1.3.5868> debian.20001:UDP,长度681
00:53:58.614081 IP 192.168.1.3.5868> debian.20001:UDP,长度674
00:53:58.621773 IP debian.20001> 192.168.1.3.5868:UDP,长度626
...等等
现在,我想从c#(单声道)中捕获相同的数据,这就是我尝试过的:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("started!");
var proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "tcpdump",
Arguments = "-i eth0 port 20001", // note eth0 is the name of my network interface
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
proc.Start();
while (!proc.StandardOutput.EndOfStream)
{
string line = proc.StandardOutput.ReadLine();
Console.WriteLine(line);
}
}
}
当我运行该程序时,没有捕获任何东西。 如何从Mono c#应用程序中捕获tcpdump -i eth0 port 20001
的结果?我知道我可以将其写入文件,但是文件会变得很大,所以我想避免这样做。还是将其写入文件并继续删除文件?