我想编写一个应用程序,告诉你什么时候在Windows平台上打开和关闭tcp端口,如果有人可以给我一些代码或样本
我的偏好是C#代码。
此致
答案 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做你想做的事。