0
私は、クライアントとサーバーの間で位置データを送信し、ソケットの仕組みを学ぶ少しのゲームに取り組んでいます。ソケットを介して同時にデータを送受信します。
サーバーはデータの送受信に問題はなく、クライアントはデータを送信できますが、クライアントがサーバーからデータを読み込もうとするとプログラムがハングします。
public void run() {
try {
serverSocket = new ServerSocket(10007);
} catch (IOException e) {
System.err.println("Could not listen on port: 10007.");
System.exit(1);
}
try {
System.out.println("Waiting for connection...");
clientSocket = serverSocket.accept();
} catch (IOException e) {
System.err.println("Accept failed.");
System.exit(1);
}
System.out.println("Connection successful");
System.out.println("Waiting for input.....");
while (true) {
try {
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
out = new PrintWriter(clientSocket.getOutputStream(), true);
if (in.readLine() != "0" && in.readLine() != null) {
setXY(in.readLine());
}
} catch (IOException e) {
e.printStackTrace();
}
out.println("X" + Graphics.charX);
out.println("Y" + Graphics.charY);
}
クライアントコード::すべてのヘルプははるかに高く評価されて
public void run() {
try {
System.out.println("Attemping to connect to host " + serverHostname + " on port " + serverPort + ".");
echoSocket = new Socket(serverHostname, serverPort);
} catch (UnknownHostException e) {
System.err.println("Don't know about host: " + serverHostname);
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for " + "the connection to: " + serverHostname);
System.exit(1);
}
while (true) {
try {
in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
out = new PrintWriter(echoSocket.getOutputStream(), true);
/*if (in.readLine() != "0" && in.readLine() != null) {
setXY(in.readLine());
}*/
} catch (IOException e2) {
e2.printStackTrace();
}
out.println("X" + Graphics.charX);
out.println("Y" + Graphics.charY);
}
}
サーバコード(この部分はコメントアウトされて)!
ここにスレッドを行っていますか? –
はい、このクラスは1つのスレッドです。 –
さて、あなたは正しくスレッド化しているわけではなく、スレッドでこれを行う方法を調べたいと思うでしょう。この種の質問はかなり尋ねられているので、ちょっとした検索をしてください。そうすればあなたには報われるでしょう。 –