C#提供了哪些帮助类来监控操作系统上的所有TCP连接。一段示例代码也将不胜感激。
注意:最初的目的是在Windows上监控这一点,但如果在其他使用.Net内核的操作系统上也能做到这一点就更好了。
发布于 2010-04-14 15:03:35
假设您想要监视机器上的TCP,您可以使用System.Net.NetworkInformation.GetActiveTcpConnections,它将为您提供TCP连接的列表以及每个连接的当前状态。您可以在常规计时器上调用它来获取套接字的更新状态。
我更熟悉用于此目的的Win32 API,例如GetTcpTable和文档较少的GetTcpTableEx,后者还提供拥有本地端点的进程的进程ID。因此,上面的内容可能并不完全符合我所认为的功能:)
当然,如果您需要在tcp套接字创建之前或之后立即得到通知,或者它的状态发生了变化,那么不幸的是,这将需要一个不能用.NET编写的内核模式驱动程序。
发布于 2012-02-23 15:51:41
如果你真的需要一种基于事件的机制,windows的事件跟踪是个不错的选择。既然你说这只是一个偏好:)你最好用windows api (c/c++)来写这篇文章。
http://msdn.microsoft.com/en-us/library/aa964766(v=vs.85).aspx
从.NET 3.5开始,可以使用System.Diagnostics.Eventing名称空间通过.NET访问部分事件跟踪。据我所知,这在.NET 4.0中已经得到了改进。我自己还没有调查过这个问题,所以我不知道TCP连接检测是否可行。
我确信你可以用windows api和ETW做任何你想做的事情。
https://stackoverflow.com/questions/2636682
复制相似问题