通过服务器向指定客户端发送消息
2015-08-07 10:32
344 查看
1HashMap的遍历向每一个socket发送数据
public HashMap<String, Socket> sockets = new HashMap(); try { Set<String>set=sockets.keySet(); Iterator<String>it=set.iterator(); while(it.hasNext()){ OutputStream os = socket.getOutputStream(); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os)); String words = textArea.getText(); System.out.println("服务器发送信息"); bw.write(words + "\n"); bw.flush(); }
2服务器一直处于读的状态,把读到的信息传递给解析方法
public void run() { InputStream is; try { is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); while (server.isRunning()) {// 别忘记方法的括号 String line = br.readLine();//把读到的信息赋给 line(JSON格式) server.readLine(line);//调用MyServer的方法穿入信息并解析 System.out.println(line); } } catch (IOException e) { e.printStackTrace(); }
3此方法解析客户端传来的信息并直接转发给目的接受客户端
public void readLine(String line) { System.out.println("开始解析这个信息"+line); JSONObject obj=JSONObject.fromObject(line); String type=obj.getString("type"); if(type.equals("toSingle")){ String msg=obj.getString("message"); String to=obj.getString("to"); String from=obj.getString("from"); String time=obj.getString("time"); Socket toSocket=sockets.get(to);//查询数组中匹配to的IP的socket。得到socket 付给toSocket System.out.println(toSocket.getInetAddress().getHostAddress());//输出目的主机地址 OutputStream os; try { os = toSocket.getOutputStream(); BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(os)); bw.write(msg+"\n"); bw.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } model.addElement(line);//服务器窗口传入收到信息
相关文章推荐
- redis和memcached相关
- Spring3.1+Hibernate3+Struts2的最新整合所需要的jar包
- 关于ant的找不到符号异常
- H3C bridge端口脚本
- 笑傲测试!!!
- 笑傲测试!!!
- 笑傲测试!!!
- 笑傲测试!!!
- 笑傲测试!!!
- 笑傲测试!!!
- 笑傲测试!!!
- 笑傲测试!!!
- Spring学习笔记-类型转换器
- LeakCanary接入MM项目中遇到的问题总结
- 南邮 OJ 1967 蜜蜂蜂房路线问题
- Android 判断app是否运行在后台
- Android Otto框架浅析
- 重置Mac账户密码
- 架构师之路
- centOS6.5如何升级php5.3.3到php5.5.27