java中soket一个服务器可以向多个客服端发送信息,怎么实现!
发布网友
发布时间:2022-08-17 07:48
我来回答
共1个回答
热心网友
时间:2023-10-11 02:34
1步.首先主服务器在阻塞等待客户端连接
2步.当有连接来的时候就分配给子服务器来和这个socket会话
3步.保存每个客户端的socket对象,比如存在一个链表onlineList<Socket>中,
///////////////////////////////////
主服务器类
onlineList= Collections.synchronizedList(new LinkedList<Socket>());//创建一个用于存放在线用户的socket对象的表
while()
{
Socket client_socket = server.accept(); //1步
subServer new_sub = new subServer(client_socket);//2步
onlineList.add(client_socket);//3步
}
然后当要群发就可以在主服务器执行下面的方法
///////////////////////////
主服务器类的群发方法
BufferedWriter writer;
String content = "要发送的内容";
for(Socket target: onlineList) //从列表中找出
{
writer = new BufferedWriter(new OutputStreamWriter(target.getOutputStream())); //循环对每个socket对象使用getOutputStream
writer.write(content); //发送出去
writer.flush(); //清空刷缓冲区
}