获取程序要连接的IP地址

问题描述 投票:2回答:2

我的目标是我的代码(C#)输出另一个程序尝试连接的IP地址。示例:我的browser.exe希望连接到位于12.34.567.89的网站,因此我的代码将输出该IP。

注意:我的主要麻烦是也列出不成功的连接尝试,因为我发现的其他所有内容似乎仅适用于已建立的连接。

我没有很多经验,这是我的第一篇文章,所以任何事情都可以帮上忙。在此先感谢

c# network-programming monitoring netstat
2个回答
1
投票

此答案不是纯C#,而是链接到用C#编写的示例调用。

通常在MS Windows平台上,许多问题,例如问题,可以使用WMI语言的WQL执行。

为了达到要求,可以查询MSFT_NetTCPConnection类并使用属性OwningProcessRemoteAddress

select OwningProcess, RemoteAddress from MSFT_NetTCPConnection

您可以使用ManagementObjectSearcher对WMI执行查询。请参见示例herehere

如果需要获取过程详细信息,则另一个查询可以提供帮助

select * from Win32_Process where ProcessID = PID_FROM_NET_TCP_CONNECTION

不幸的是,不可能在WQL中联接表,但是可以创建和注册自己的WMI类,并结合类似于联接行为的必需值。例如here。或者只是在您的代码中处理它。


0
投票

我认为原始套接字非常适合用于这些目的。

new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);

尝试查看原始套接字的that示例(您需要用ip替换_fcaptureIp)

© www.soinside.com 2019 - 2024. All rights reserved.