C# 使用TcpClient绕过代理

C# 使用TcpClient绕过代理,c#,networking,proxy,tcpclient,C#,Networking,Proxy,Tcpclient,我正在尝试编写一个本地代理应用程序。我知道代理应用程序在理论上是如何工作的。 我已经做了所有与处理传入连接相关的事情。但问题是我应该如何将客户端请求的请求发送到指定的Url。当我尝试使用TcpClient创建到指定Url和端口的连接时,它会引发以下异常: 目前还不知道这样的主机 编辑:我认为我应该绕过代理,就像FireFox正在做的那样,甚至是系统代理集 任何想法都会有帮助。 提前感谢。这些链接可能会有所帮助: 基于colinsmith提供的链接,我使用TcpClient绕过了代理。我是这

我正在尝试编写一个本地代理应用程序。我知道代理应用程序在理论上是如何工作的。 我已经做了所有与处理传入连接相关的事情。但问题是我应该如何将客户端请求的请求发送到指定的Url。当我尝试使用
TcpClient
创建到指定Url和端口的连接时,它会引发以下异常:

目前还不知道这样的主机

编辑:我认为我应该绕过代理,就像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 };
    }

希望这对其他人有帮助。

这有帮助吗?谢谢你的回复,第一个链接帮助了我。我修改了一些代码行,它成功了。