私はサーバーマルチクライアント通信アプリケーションを作成しています。クライアントをループして受け入れるThread
を作成する必要があります。私の現在のコードは次のとおりです。ただしJava while(真)ループが1回実行されます
Thread acceptor = new Thread() {
public void run() {
while(true){
System.out.println("looking for clients");
try{
Socket s = serverSocket.accept();
clientList.add(new ConnectionToClient(s));
}
catch(IOException e){ e.printStackTrace(); }
}
}
}
};
acceptor.setDaemon(true);
acceptor.start();
、私は自分のアプリケーションを実行すると、テキストlooking for clients
は一度だけ表示され、一切のクライアントが接続できません。
なぜ私のwhile(true)
ループは実際にはループしておらず、一度だけ動作しているのか分かりません。
EDIT:
ConnectionToClient
コンストラクタは次のとおりです。
ConnectionToClient(Socket socket) throws IOException {
this.socket = socket;
in = new ObjectInputStream(socket.getInputStream());
out = new ObjectOutputStream(socket.getOutputStream());
Thread read = new Thread(){
public void run(){
while(true){
try {
Object obj = in.readObject();
messages.put(obj);
} catch(IOException | ClassNotFoundException | InterruptedException e) {
e.printStackTrace();
}
}
}
};
read.start();
}
「acceptor.setDaemon(true);」とは何と思いますか?実際に何人のクライアントが接続しようとしていますか? –
私が望むだけ多くのクライアントをサポートしようとしていますが、私は1〜3人のクライアントでそれをテストしています。 –
'accept'のためのjavadoc - '接続が確立されるまでメソッドがブロックされる ' –