TCP连接创建和关闭事件挂钩

时间:2010-04-14 10:44:32

标签: c# windows tcpclient

我想编写一个应用程序,告诉你什么时候在Windows平台上打开和关闭tcp端口,如果有人可以给我一些代码或样本

我的偏好是C#代码。

此致

2 个答案:

答案 0 :(得分:3)

假设您要监视计算机上的TCP套接字,可以使用System.Net.NetworkInformation.GetActiveTcpConnections,它应该为您提供TCP连接列表以及每个连接的当前状态。您可以在常规计时器上调用以获取套接字的更新状态。

我对此更熟悉Win32 API,例如GetTcpTable和记录较少的GetTcpTableEx,后者还提供了拥有本地端点的进程的进程ID。所以上面的内容可能并不完全符合我的认为:)

当然,如果您需要在创建tcp套接字之前或之后立即通知它或状态发生变化,那么遗憾的是需要一个无法用.NET编写的内核模式驱动程序。

答案 1 :(得分:1)

如果您确实需要基于事件的机制,那么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做你想做的事。