でのServerSocketに渡す「ホストパラメータに」(コアがここhttps://resources.oreilly.com/examples/9781565923713/blob/master/SimpleProxyServer.javaから取られた)javaの
しかし、私はクライアントから直接ホストを渡したいときに、この例では、起動パラメータを使用しています。パラメータおよびサーバーに渡し:
クライアントはその
final HttpURLConnection conn = (HttpURLConnection) new URL("http://www.google.com")
.openConnection(
new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 7901)));
conn.connect();
System.out.println(conn.getResponseCode());
私の最初のアイデアのようなHTTP接続は、クライアントの要求を読んで、それを文字列として保存する(またはbyty [])、ヘッダの「ホスト」をフェッチすることだったです。
しかし、SimpleContxyServer.javaは、サーバーにデータを送信するスレッドでwhile((bytes_read = from_client.read(request)) != -1)
を使用し、このt
スレッドが開始される前にInputSreamを読み取ってホストを取得すると、コードがハングします。
try { server = new Socket(host, remoteport); }
の作成質問は前にこの
InputStreamReader from_client_reader = new InputStreamReader(client.getInputStream());
BufferedReader reader = new BufferedReader(from_client_reader);
String line = reader.readLine();
while (!line.isEmpty()) {
line = reader.readLine();
if (line.contains("Host: ")) {
host = line.substring(line.indexOf("Host: ") + 6,
line.length()).trim().replace("www.", "");
}
}
のようなものを右話してい
:「ソケットにパラメータを渡す方法についての他の方法はありますかプロキシを作成する方法クライアントからの要求パラメータを使用してソケットを起動するサーバー?