flex+java+sokcet长连接的实现,处理了沙漏

首先开个843端口处理沙漏问题 package com.medou; import java.io.*; import java.net.*; public class SecurityServerSocket { private ServerSocket server; private String xml="<?xml version=\"1.0\" encoding=\"utf-8\"?>"+ ""http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd\">" +"<cross-domain-policy>"+ "<allow-access-from domain='\"127.0.0.1\"' to-ports='\"8400\"/'>" +"<allow-access-from domain='\"localhost\"' to-ports='\"8400\"/'>"+ "<allow-access-from domain='\"*\"' to-ports='\"*\"/'>"+ "</allow-access-from></allow-access-from></allow-access-from></cross-domain-policy>"; public SecurityServerSocket() throws IOException { server=new ServerSocket(843); while(true) { Socket s=server.accept(); sendToCrossXml(s); } } /** * 发送策略文件格式 * @param s * @throws IOException */ private void sendToCrossXml(Socket s) throws IOException { PrintWriter pw=new PrintWriter(s.getOutputStream()); pw.write(xml+"\0");//必须有\0,否则没效果 pw.flush(); s.getOutputStream().flush(); System.out.println("策略已发送,等待连接"); } /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { new SecurityServerSocket(); } } 发送安全策略后,会自动关闭 其次开个8888端口作为和flex的长连接通讯 package com.medou; import java.io.*; import java.net.*; import java.util.*; public class Server { private ServerSocket server; private Vector<socket> sManager=new Vector<socket>();//管理套接字的Vector private Random rnd=new Random();//创建随机数的发生器 public Server() { createServerSocket(8888); } //启动服务器 private void createServerSocket(int port) { try { server = new ServerSocket(port); System.out.println("服务监听端口:" + port); while(true) { Socket client = server.accept(); System.out.println("长连接已建立:" + port); new Phone_Thread(client).start(); sManager.add(client); System.out.println("当前客户机连结数:"+sManager.size()); } } catch (IOException e) { e.printStackTrace(); } } class Phone_Thread extends Thread { private BufferedReader reader; private BufferedWriter writer; private Socket socket; Phone_Thread(Socket socket) {//构造函数 this.socket=socket; } public void run() { try { InputStreamReader input = new InputStreamReader(socket.getInputStream(), "UTF-8"); reader = new BufferedReader(input); OutputStreamWriter output = new OutputStreamWriter(socket.getOutputStream(), "UTF-8"); writer = new BufferedWriter(output); while(true) { //读取客户端发送的数据 StringBuilder data = new StringBuilder(); char[] a = new char[50]; int j = reader.read(a); for(int i=0;i<j if data else break string info="data.toString().trim();" system writer catch e finally try null reader socket smanager ie public static void main args new server version="1.0" encoding="utf-8"><application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationcomplete="initApp()"><script>0&&intSY-2) { myText.text+="结果:你输了\n"; }else if(intSY>=2) { myText.text+="结果:你输了\n"; }else if(intSY </script><textarea x="10" y="32" width="331" height="263" id="myText"></textarea><textinput x="10" y="303" width="245" id="myInput"></textinput><button x="273" y="304" label="发送" id="myBtn" click="sendMessage(myInput.text)"></button> <label x="10" y="10" text="规则:0代表剪刀;1代表锤;2代表包袱" width="331" fontweight="bold"></label> </application></j></socket></socket>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值