当您的客户端连接到服务器时,您的服务器会
Socket为其创建一个,这里是
Socket socket =ss.accept();,您的套接字变量将保存该客户端。
现在,如果你只是不断添加客户端套接字连接到
arraylist你的
while循环,你将与你的服务器一样主动连接客户端列表:
接受后:
clients = new ArrayList<DataOutputStream>();Socket socket = ss.accept();os = new DataOutputStream(socket.getOutputStream());clients.add(os);
现在,当您在该
clientsarraylist中拥有所有客户端时,就可以遍历它,或者使用某种协议来定义读取后应该发送数据的客户端。
Iterator<DataOutputStream> it = clients.iterator();while ((message = reader.readLine()) != null) { //reading while (it.hasNext()) { try { DataOutputStream oss = it.next(); oss.write(message);//writing oss.flush(); } catch (Exception e) { } } }这将遍历arraylist中所有可用的客户端并发送给所有客户端。您可以定义仅发送给某些人的方式。
例如:维护一个
ActiveClients
arraylist并可能与某个GUI交互,或者可以定义要发送消息的所有客户端。然后仅将这些客户端的outputStreams添加到
ActiveClients
ActiveClients.add(clients.get(2));
或删除它们(如果您不想要它们)。
ActiveClients.remove(clients.get(2));
现在只需循环遍历
arraylist即可发送上述数据。



