2017-08-14 6 views
0

私は、あらゆるタイプのネットワークトラフィックIE FTP、HTTP、HTTPS、RDPなどに対して複数の接続を受け入れる集中型Javaサーバーを開発したいと考えています。唯一の目標は、それを期待どおりに転送することです応答を要求者に返す。私が探している唯一の情報は、Javaサーブレットのリクエストを転送することと、HTTPの転送に関する情報が関係しているため、どこから始めるべきかわかりません。とにかくそれを転送するだけですか、またはすべてのプロトコルを別々に扱う必要がありますか?任意のプロトコルの簡単なフォワードプロキシ

public void run() { 
    InetSocketAddress address = (InetSocketAddress)this.socket.getRemoteSocketAddress(); 
    try { 
     InputStreamReader isr = new InputStreamReader(this.socket.getInputStream()); 
     BufferedReader br = new BufferedReader(isr); 
     OutputStream os = this.socket.getOutputStream(); 
     String ipAddress = address.getHostName(); 
     Log.d("client","A client has connected from: "+ipAddress); 

     //TODO forward the client inputstream to the destination 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     try{ 
      this.socket.close(); 
     } catch (Exception e) {} 
    } 
} 

答えて

0

すべてのプロトコルは、HTTPのCONNECT動詞のように1つのストレートジャケットに強制したい場合やできない限り、それぞれ異なります。意図したクライアントが使用できるプロキシプロトコルを調べる必要があります。

おそらく、既存の実装でSOCKSを使用することを検討する必要があります。

+0

私はこのままでも頭​​を包み込みたいと思っていますが、私はそれを把握し始めていると思います。したがって、私のクライアントはHTTP接続要求を自分のjavaプロキシに送信して、使用するホストとポートを指定します。プロキシプログラムは、その情報を使用してトンネルを開き、要求と応答を前後にパイプします。そうであれば、Windows RDPやFilezillaなどの既存のプログラムではどうすればできますか? – Silas

関連する問題