Java代理不显示任何内容:客户端<--&燃气轮机;服务器

Java代理不显示任何内容:客户端<--&燃气轮机;服务器,java,proxy,Java,Proxy,这是我的代码: import java.io.*; import java.net.*; public class proxy { public static void main(String[] args) throws IOException { try { String host = "gamea.clashofclans.com"; int remoteport = 9339; ServerSocket ss = new ServerSo

这是我的代码:

import java.io.*;
import java.net.*;

public class proxy {
  public static void main(String[] args) throws IOException {
    try {
      String host = "gamea.clashofclans.com";
      int remoteport = 9339;
      ServerSocket ss = new ServerSocket(0);
      int localport = ss.getLocalPort();
      ss.setReuseAddress(true);
      // Print a start-up message
      System.out.println("Starting proxy for " + host + ":" + remoteport
          + " on port " + localport);
      // And start running the server
      runServer(host, remoteport, localport,ss); // never returns
      System.out.println("Started proxy!");
    } catch (Exception e) {
      System.err.println(e);
    }
  }

  /**
   * runs a single-threaded proxy server on
   * the specified local port. It never returns.
   */
  public static void runServer(String host, int remoteport, int localport, ServerSocket ss)
      throws IOException {
    // Create a ServerSocket to listen for connections with
    System.out.println("Connected to Client!");

    final byte[] request = new byte[2048];
    byte[] reply = new byte[4096];

    while (true) {
      Socket client = null, server = null;
      try {
        // Wait for a connection on the local port
        client = ss.accept();
        System.out.println("Client Accepted!");

        final InputStream streamFromClient = client.getInputStream();
        final OutputStream streamToClient = client.getOutputStream();

        // Make a connection to the real server.
        // If we cannot connect to the server, send an error to the
        // client, disconnect, and continue waiting for connections.
        try {
          server = new Socket(host, remoteport);
          System.out.println("Client connected to server.");
        } catch (IOException e) {
          PrintWriter out = new PrintWriter(streamToClient);
          out.print("Proxy server cannot connect to " + host + ":"
              + remoteport + ":\n" + e + "\n");
          out.flush();
          client.close();
          System.out.println("Client disconnected");
          continue;
        }

        // Get server streams.
        final InputStream streamFromServer = server.getInputStream();
        final OutputStream streamToServer = server.getOutputStream();

        // a thread to read the client's requests and pass them
        // to the server. A separate thread for asynchronous.
        Thread t = new Thread() {
          public void run() {
            int bytesRead;
            try {
              while ((bytesRead = streamFromClient.read(request)) != -1) {
                streamToServer.write(request, 0, bytesRead);
                streamToServer.flush();
              }
            } catch (IOException e) {
            }

            // the client closed the connection to us, so close our
            // connection to the server.
            try {
              streamToServer.close();
            } catch (IOException e) {
            }
          }
        };

        // Start the client-to-server request thread running
        t.start();

        // Read the server's responses
        // and pass them back to the client.
        int bytesRead;
        try {
          while ((bytesRead = streamFromServer.read(reply)) != -1) {
            streamToClient.write(reply, 0, bytesRead);
            streamToClient.flush();
          }
        } catch (IOException e) {
        }

        // The server closed its connection to us, so we close our
        // connection to our client.
        streamToClient.close();
      } catch (IOException e) {
        System.err.println(e);
      } finally {
        try {
          if (server != null)
            server.close();
          if (client != null)
            client.close();
        } catch (IOException e) {
        }
      }
    }
  }
}
当我运行它时,我会看到一条消息“connectedtoclient”(第40行),但在那之后,窗口中什么也没有发生。我没有收到“客户端已连接到服务器消息”,所以我假设问题就在附近的某个地方

为什么会这样?有人知道怎么解决吗

我对java非常陌生,所以请不要对我苛刻。

您的“连接到客户端!”消息具有误导性。此时,您正在启动服务器,客户端将很快能够连接,但尚未连接任何客户端。您的程序正在等待

    client = ss.accept();

返回。等待通过端口建立连接。您需要另一个线程、程序或计算机连接到此端口,才能开始将它们作为客户端托管。确保其他线程、程序或计算机已正确配置为连接到打开的端口。您可能需要将ServerSocket设置为使用固定端口,或者确定它在哪个端口上打开了一个套接字,并告诉您的其他程序要使用哪个端口。

我有一个使用Sport 9339的Bluestack游戏。仍然无法工作。@Shiv
9339
是您正在连接的
gamea.clashofclans.com
上的端口;您的客户端需要连接到端口
localport
,该端口在您每次运行此程序时都可能更改。@Shiv取决于您的客户端。如果总是连接到端口9339,只需将localport设置为始终为9339:
ServerSocket ss=newserversocket(9339)