Я пишу очень простую транспортную симуляцию (пожалуйста, не спрашивайте, почему я использую этот подход, это не совсем мой вопрос).
У меня запущены три потока (хотя вы можете рассматривать их как отдельные программы). Один в качестве клиента, один в качестве сервера и один в качестве прокси.
Первый используется в качестве клиента, и основной код для этого приведен здесь:
try {
Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(InetAddress.getLocalHost(), 4466));
Socket socket = new Socket(proxy);
InetSocketAddress socketAddress = new InetSocketAddress(InetAddress.getLocalHost(), 4456);
socket.connect(socketAddress);
// send data
for (String straat : straten) {
socket.getOutputStream().write(straat.getBytes());
}
socket.getOutputStream().flush();
socket.getOutputStream().close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
Второй - это сторона сервера, указанная здесь:
public void run() {
try {
ServerSocket ss = new ServerSocket(4456);
Socket s = ss.accept();
BufferedReader in = new BufferedReader(
new InputStreamReader(s.getInputStream()));
String incoming;
while ((incoming = in.readLine()) != null) {
panel.append(incoming + "\n");
}
panel.append("\n");
s.getInputStream().close();
s.close();
ss.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
И еще есть прокси-нить:
public void run() {
try {
ServerSocket ss = new ServerSocket(4466);
Socket s = ss.accept();
BufferedReader in = new BufferedReader(
new InputStreamReader(s.getInputStream()));
panel.append(verzenderId + "\n");
String incoming;
while ((incoming = in.readLine()) != null) {
panel.append(incoming + "\n");
}
panel.append("\n");
s.getInputStream().close();
s.close();
ss.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
Почему-то это не сработает. Сообщение отправляется непосредственно на сервер, и прокси-сервер не получает никакого запроса на сокет.
Как мне сделать так, чтобы порт 4466 стал прокси для связи между клиентским потоком и серверным потоком?
Цель состоит в том, чтобы сделать этот сокет между клиентом и сервером, чтобы он стал SSLSocket, чтобы прокси-сервер не мог читать все, что проходит через него. Поэтому установка двух сокетов, одного между клиентом и прокси-сервером, а другого между прокси-сервером и сервером, - это не решение, которое я ищу.
Заранее большое спасибо.