着信ソースからのパケットを表示してデバッグするためのプロキシとして Java プログラムを作成しようとしています。これを行うために、単純な Java サーバー アプリケーションを作成し、デバイス上のホスト ファイルを編集しました。今のところすべて正常に動作していますが (Relay クラス ファイルも)、本格的なプロキシにしようとしています。データをサーバーに送信し、応答をクライアントに返す要素をどのように組み込むことができますか? 中間者タイプのようなものです。
import java.net.*;
import java.io.*;
import org.ini4j.Ini;
public class RelayMultiClient extends Thread {
private Socket socket = null;
Socket relay = null;
public RelayMultiClient(Socket socket) {
super("RelayMultiClient");
this.socket = socket;
}
public void run() {
try {
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
if(Relay.max_clients == Relay.connected_clients) {
//There are too many clients on the server.
System.out.println("Connection refused from " + socket.getRemoteSocketAddress() + ": Too many clients connected!");
out.close();
in.close();
socket.close();
}
else {
Ini ini = new Ini(new File("settings.ini"));
Relay.connected_clients++;
System.out.println("Connection from client " + socket.getRemoteSocketAddress() + " established. Clients Connected: " + Relay.connected_clients);
while (in.readLine() != null) {
//Send data to the server
//Receive data from server and send back to client
}
System.out.println("Connection from client " + socket.getRemoteSocketAddress() + " lost.");
Relay.connected_clients--;
out.close();
in.close();
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ありがとう、クリス
PS: HTTP データを取得しようとしているのではなく、作成したゲームからデータを取得しようとしています。このタイプのデータに追加の処理が必要かどうかはわかりません。