0

只是想处理套接字。服务器和客户端在两个不同的程序中运行。

它们似乎彼此连接良好,但客户端不会正确地将其输出发送到服务器。服务器只是挂起。这是代码:

服务器:

  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();
    }
  }

客户:

套接字客户端Socket;

  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 回答