- 私は、サーバープログラムを書く必要は、すべてのクライアントが、たとえば、株価をサーバーから同じデータをサブスクライブしている複数のクライアント
- を受け付けます更新。私は非常にマルチスレッド/ TCPでexperiancedおりませんので
- 各クライアントはだからここ
を「停止」、「ログオン」のように、サーバーに簡単なコマンドを送信することができますが、私の解決策ですが、私は知りたいことは良いです溶液?そうでない場合は、よりよい解決策がありますか?クライアントソケットごとにスレッドが必要ですか?ありがとう ご参考までに:すべての人を混乱させて申し訳ありません、それは5-10クラスだけを含む小さなプロジェクトです。
class AcceptThread {
......
public void run() {
ControlThread controlThread = new ControlThread();
controlThread.start();
Socket socket = new Socket(port);
while (!stop) {
Socket s = socket.accept();
controlThread.addClient (s);
}
}
}
class ControlThread {
Set<Scoket> clients;
SendDataThread sendDataThread;
public ControlThread() {
sendDataThread = new SendDataThread();
sendDataThread.start();
}
public void addClient (Socket socket) {
clients.add(socket);
sendDataThread.addListener(socket);
}
public void run() {
......
for (Socket s : clients) {
if (s.getInputStream().available()) {
//read command from s
}
}
......
}
}
class SendDataThread() {
Set<Scoket> listeners;
public void addListener (Socket s) {
listeners.add(s);
}
public void run() {
for (Socket s: listeners) {
// send data to each listener
}
}
}
宿題でなければ、ゼロから始める代わりに[JMS](http://en.wikipedia.org/wiki/Java_Message_Service)のような既存のソリューションを見てください。 –
ソケットは受け入れられません。 – JasonHuang