我想写一个本地代理应用程序。我知道代理应用程序在理论上如何运作。 我已经做了所有处理传入连接的相关事宜。但问题是我应该如何发送请求哪个客户端请求到指定的Url。当我尝试创建TcpClient
到指定的URL和端口的连接,它抛出以下异常:绕过代理使用TcpClient
没有这样的主机被称为
编辑:我想我应该绕过代理像FireFox甚至还在做系统代理套装。
任何想法都会有所帮助。 在此先感谢。
我想写一个本地代理应用程序。我知道代理应用程序在理论上如何运作。 我已经做了所有处理传入连接的相关事宜。但问题是我应该如何发送请求哪个客户端请求到指定的Url。当我尝试创建TcpClient
到指定的URL和端口的连接,它抛出以下异常:绕过代理使用TcpClient
没有这样的主机被称为
编辑:我想我应该绕过代理像FireFox甚至还在做系统代理套装。
任何想法都会有所帮助。 在此先感谢。
基于colinsmith提供的链接,我使用的TcpClient做绕过代理。这里是我是怎么做的:
public static TcpClient CreateTcpClient(string url)
{
var webRequest = WebRequest.Create(url);
webRequest.Proxy = null;
var webResponse = webRequest.GetResponse();
var resposeStream = webResponse.GetResponseStream();
const BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Instance;
var rsType = resposeStream.GetType();
var connectionProperty = rsType.GetProperty("Connection", flags);
var connection = connectionProperty.GetValue(resposeStream, null);
var connectionType = connection.GetType();
var networkStreamProperty = connectionType.GetProperty("NetworkStream", flags);
var networkStream = networkStreamProperty.GetValue(connection, null);
var nsType = networkStream.GetType();
var socketProperty = nsType.GetProperty("Socket", flags);
var socket = (Socket)socketProperty.GetValue(networkStream, null);
return new TcpClient { Client = socket };
}
希望这有助于他人。
这有帮助吗? http://alandean.blogspot.co.uk/2010/06/routing-tcpclient-http-requests-through.html – 2012-07-29 15:33:39