0

ソケットのハンドルを取得しようとしています。サーバーとクライアントは、2 つの異なるプログラムで実行されています。

それらは互いに正常に接続しているように見えますが、クライアントはその出力をサーバーに適切に送信しません。サーバーがハングするだけです。コードは次のとおりです。

サーバ:

  private ServerSocket serverSocket;
  private Socket client;

  public void run() throws Exception {
     serverSocket = new ServerSocket(20005);
     while(currentState == Game.State.NORMAL) {
      client = serverSocket.accept();
      PrintWriter out = new PrintWriter(client.getOutputStream(), true);
      BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
      String clientInput = in.readLine();

      // Takes the client input string and does some simple game logic that returns a Gson object
      Gson serverResponse = processInput(clientInput);
      out.write(serverResponse.toString());
      out.flush();
    }
  }

クライアント:

ソケット clientSocket;

  void run() throws Exception {
    clientSocket = new Socket("192.168.0.24", 20005);
    PrintWriter out;
    BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

    // Print the state of the game - returns false if state is win or lose.
    while(printState()) {
      out = new PrintWriter(clientSocket.getOutputStream(), true);
      // This method just takes some input from the console
      String clientInput = getInput();

      out.write(clientInput);
      out.flush();

      String serverResponse = in.readLine();

      updateState(serverResponse);
    }
  }
}

発生している基本的なゲーム ロジックがいくつかありますが、それはかなりマイナーであり、無関係である必要があります。ここで基本的なことを誤解しているだけだと思います。

皆さんありがとう。

4

1 に答える 1

2

in.readLine()のステートメントと一致するように改行文字を送信してくださいServer

out.write(clientInput + "\n");

Server->からデータを送信する場合も同様ですClient

于 2013-02-10T01:13:10.303 に答える