0

私の(テスト)Androidプロジェクトには次のコードがあります:

        URL u = new URL("http://www.google.com");

        InetSocketAddress sa = InetSocketAddress.createUnresolved("127.0.0.1", 1080);
        Proxy proxy = new Proxy(Proxy.Type.SOCKS, sa);
        HttpURLConnection conn = (HttpURLConnection) u.openConnection(proxy);

次に、ポート 1080 でリッスンする SOCKS サーバーを実装しました。

私が抱えている問題は、SOCKS4 接続要求で、宛先アドレスとポートが "ip for google":80 ではなく、127.0.0.1:1080、つまりプロキシ アドレスであることです。

OK を返すと、HTTP データの取得を開始します。

何か間違ったことをしているのですか、それとも SOCKS クライアントにバグがありますか?

4

1 に答える 1

0

少しレベルが低いですが、役に立つかもしれない解決策があります:

これは、 SSHTunnelが実行されているルート化された Nexus 4 上の Android 4.3 で機能します。

    SocketAddress proxyAddr = new InetSocketAddress("127.0.0.1", 1984);  
    SocketAddress hostAddr = new InetSocketAddress(address, port);
    java.net.Proxy proxy = new java.net.Proxy(java.net.Proxy.Type.SOCKS, proxyAddr);
    socket = new Socket(proxy);
    socket.connect(hostAddr);

注: iptables betaもインストールしましたが、必要かどうかはわかりません。

これをエミュレータで動作させるには、ホスト マシンの Android エイリアスである 10.0.2.2 に IP を変更します。もちろん、マシン上でローカルの SOCKS プロキシを実行する必要があります。

于 2013-10-21T12:53:02.783 に答える