重定向所有网络流量

时间:2012-10-05 19:15:30

标签: c# network-programming

  

可能重复:
  How to create a simple proxy in C#?

我正在编写代理应用程序,我想处理所有网络连接。 我已经编写了服务器和客户端应用程序,所以现在我只需要将网络连接重定向到它。

我搜索了很多,这就是我发现的:

//For sniffing the socket to capture the packets has to be a raw socket, with the
//address family being of type internetwork, and protocol being IP
mainSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);

//Bind the socket to the selected IP address
mainSocket.Bind(new IPEndPoint(IPAddress.Parse(cmbInterfaces.Text), 0));

//Set the socket  options
mainSocket.SetSocketOption(SocketOptionLevel.IP,    //Applies only to IP packets
SocketOptionName.HeaderIncluded,                    //Set the include the header
true);                                              //option to true

byte[] byTrue = new byte[4] {1, 0, 0, 0};
byte[] byOut = new byte[4]{1, 0, 0, 0}; //Capture outgoing packets

我不确定这是否会对我有所帮助,因为我无法取消原始请求。最简单的方法是什么?

1 个答案:

答案 0 :(得分:0)

您将能够透明地拦截所有网络流量的唯一方法是使用驱动程序,由于显而易见的原因,您无法在c#中执行此操作。也就是说,可以使用winpcap作为内核模式组件,并在c#中执行应用程序逻辑。已经有一些interop code与winpcap合作,但我还没有使用它,因此无法说明支持的稳定性和/或完整性。