1

プロキシ サーバーを構築しようとしていますが、最近は https に取り組んでいます。この投稿で指定されているとおり。Connect リクエストをトンネリングしようとしました。私のコードは次のとおりです。

private boolean handleConnect(HttpServletRequest req,HttpServletResponse response){
    String uri=req.getRequestURI();
    String port="";
    String host="";
    int c=uri.indexOf(":");
    if (c >= 0){
        port = uri.substring(c + 1);
        host = uri.substring(0,c);
        if (host.indexOf('/') > 0)
            host = host.substring(host.indexOf('/') + 1);
    }
    // Make Asyncronous connection
    try{
        InetSocketAddress inetAddress = new InetSocketAddress(host,Integer.parseInt(port));
        {
            InputStream in=req.getInputStream();
            OutputStream out=response.getOutputStream();
            if(true){
                Socket sock=new Socket(host,Integer.parseInt(port));
                IO.copy(in, sock.getOutputStream());
                IO.copy(sock.getInputStream(), out);
                if(!sock.getKeepAlive()){
                    sock.close();
                }

            }
        }
    }
    catch(Exception ex){
        ex.printStackTrace();

        return false;
    }
    return true;
}

のコード結果java.net.UnknownHostException: google.com.npと のhttps://google.com.npタイムアウトhttps://Facebook.com。何故ですか ??Connect HTTP リクエストをトンネリングする最善の方法を提案してください。

4

1 に答える 1

1

あなたの UnknownHostException は、存在しないホストまたは誤って構成された DNS、およびネットワーク接続の問題への接続タイムアウトのいずれかが原因であり、どちらもここでは話題ではありませんが、この方法で適切なプロキシを実際に作成することはできません. 接続ごとに 2 つのスレッドを開始する必要があります。1 つは各方向にバイトをコピーするためのものです。

于 2013-05-25T00:59:55.813 に答える