私はスレッドの世界に少し慣れていません。同じポートで複数のクライアントを受け入れることができるように、別のスレッドに接続するすべてのクライアントを割り当てるゲームサーバーを作成しています。ただし、サーバーに接続しているクライアントに問題がありますが、データを(ObjectOutputStreamの形式でサーバーに)送信できません。何がうまくいかない可能性があるかについての指針はありますか?
これが私のMatchmakingServer.javaのコードです
try {
listenForPlayers = new ServerSocket(portNumber);
System.out.println("Port opened. Searching for players");
while (true){
Socket clientSocket = listenForPlayers.accept();
Runnable r = new PlayerHandlerForServer(clientSocket);
new Thread(r).start();
}
} catch (Exception e) { }
私のPlayerHandlerオブジェクトはRunnableを実装しており、これがそのrunメソッドです。
private Player player;
private ObjectInputStream getPlayerData;
private static PrintWriter sendPlayerData;
private Socket socket;
public void run() {
try {
getPlayerData = new ObjectInputStream(socket.getInputStream());
player = (Player) getPlayerData.readObject();
//do stuff with the player object, this code get executed.
sendPlayerData = new PrintWriter(socket.getOutputStream(),true);
updatePlayersFound(sendPlayerData);
} catch (Exception e) { }
}