java中soket一个服务器可以向多个客服端发送信息,怎么实现!
1个回答
展开全部
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(); //清空刷缓冲区
}
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(); //清空刷缓冲区
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询