0

ローカル プロキシ アプリケーションを作成しようとしています。プロキシ アプリケーションが理論上どのように機能するかを知っています。着信接続の処理に関連するすべてのことを行いました。しかし、問題は、クライアントがリクエストしたリクエストを指定された URL に送信する方法です。TcpClient指定した URL とポートへの接続を作成しようとすると、次の例外がスローされます。

そのようなホストは知られていません

編集: FireFoxがシステムプロキシセットでも行っているようなプロキシをバイパスする必要があると思います。

どんなアイデアでも役に立ちます。前もって感謝します。

4

2 に答える 2

1

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 };
    }

これが他の人に役立つことを願っています。

于 2012-07-30T22:59:32.547 に答える