ソケットのハンドルを取得しようとしています。サーバーとクライアントは、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);
}
}
}
発生している基本的なゲーム ロジックがいくつかありますが、それはかなりマイナーであり、無関係である必要があります。ここで基本的なことを誤解しているだけだと思います。
皆さんありがとう。