おそらく必要なのは、マルチスレッド サーバーです。サーバーが接続を受け入れるたびに、サーバーはそのクライアントへの送受信を処理するスレッドを作成します。サーバーでスレッドを使用しない場合、一度に 1 つの接続しか処理できません。したがって、あなたが言ったように、サーバーは無限にループし、着信接続をリッスンします。
while(true){
serverSocket.accept();
ClientHandler c = new ClientHandler(serverSocket);
クラス ClientHandler のインスタンスは、接続が受け入れられるたびに作成されます。このクラスは Runnable を実装し、そのソケットで getInputStream と getOutputStream を使用して受信メッセージをループします。
public class ClientHandler implements Runnable{
DataInputStream in;
DataOutputStream out;
//ClientHandler constructor
public ClientHandler(Socket s) throws IOException{
in= new DataInputStream(socket.getInputStream());
out=new DataOutputStream(socket.getOutputStream());
thread.start();
}
実行方法:
public void run() {
while(true){
String temp="";
while ((temp = (String) in.readUTF()) != null){ // Read from the input stream each iteration. When temp is not null a message is recived
System.out.println(temp);
上記のコードは、発生する可能性のあるさまざまな例外を考慮しておらず、非常に基本的なものであることに注意してください。ただし、ソケットを使用するサーバーを実装する方法についての基本的な考え方は理解できるはずです。