使用C#/ C ++,是否可以限制网络流量?

时间:2010-01-26 21:49:46

标签: c# c++ windows networking sockets

我正在开发一个家长监控/跟踪应用程序,该应用程序具有锁定所有互联网活动的功能。虽然禁用网络适配器似乎是一个简单的解决方案,但应用程序必须能够远程重新启用互联网 - 因此网络需要保持启用状态,达到一定限度。

不幸的是,我在实践中找不到合适的方法来实现这一点。没有这个功能,应用程序几乎死在水中。所以我遇到了一个巨大的障碍,我愿意接受任何建议。

通过我的应用程序,我需要达到两个要求:

  1. 放弃所有互联网活动。 然后
  2. 仅启用指定端口和IP地址的互联网活动。 (我的服务,将进行调查)
  3. 简单的目标吧?最近没那么多。

    虽然我希望在C#中实现这一点,但我知道这可能是一个长镜头,我对C ++解决方案持开放态度,可以通过我的应用程序将其作为资源调用。

    另请注意,我无法在用户的系统上安装任何第三方软件,因为此解决方案需要包罗万象。

    提前致谢!

3 个答案:

答案 0 :(得分:7)

您需要使用Windows Filtering Platform将自定义图层注入IP堆栈。此SDK专门针对家长控制程序等。毋庸置疑,作为任何内核模块,它必须在C中开发,您必须具备Windows内部的专业知识:

  

Windows过滤平台API是   设计用于程序员使用   C / C ++开发软件。   程序员应该熟悉   网络概念和设计   系统使用用户模式和   内核模式组件。

答案 1 :(得分:0)

可以能够利用WinINET API实现这一目标; WinINET定义了大多数/许多Windows应用程序的基本Internet设置,可用于定义代理信息。考虑到这一点,您可以创建一个代理,拒绝除您之外的所有请求。

答案 2 :(得分:0)

不是直接的答案,但是这类事情通常是在带有serial connection的带外或带有连接到“受信任”局域网的第二个NIC的情况下完成的。