0

ServerSocketを複数のソケットと通信させようとしていますが、方法がわかりません。これまでのところ、serverSocket.accept()を呼び出すと、サーバーと最初のソケットの間で通信するためのソケットが返されることに気付きました。 ServerSocketに接続しようとすると、接続は許可されますが、通信するための新しいソケットを取得できません。2番目以降のソケットと通信するにはどうすればよいですか?

4

1 に答える 1

2

簡単に言うと、両方のソケットと同時に通信する場合は、新しいスレッドを生成する必要があります。

ServerSocket ss = new ServerSocket(... params ...);
while(isRunning) {
    Socket socket = ss.accept();
    Runnable r = new SocketHandler(socket); // write the socket handler class
    Thread t = new Thread(r);
    t.start();
} 

今では明らかに、これに対して行うことができる多くの改善があります。最も明白なのは、rおよび/またはtの参照を保持することです。これにより、それらをより適切に/より厳密に制御し、それらを自由に停止することができます。しかし、これらの機能はこの質問の範囲をはるかに超えています。

于 2012-09-13T22:07:08.863 に答える