彻彻底底的解决Flex,as3 缺乏策略文件权限 问题

说内容,

flash 的策略文件是个头痛问题,痛过了也就解决了,

 

解决办法有二个

 

1. 使用 xmlsocket 服务器监听 843 端口,然后返回策略文件内容

2. 在服务器上使用 crossdomain.xml 文件来解决。(貌似这个方法不是很好用

 

反正我用上面两种方法都试过,第二种配置简单,但是很不好用,在这里就只讲第一种方法,第二种方法网上很多...

 

在服务器上监听 843 端口

 

下面是java的代码

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; public class Handler implements Runnable { private Socket socket; public Handler(Socket s){ this.socket=s; } private BufferedReader getReader(Socket s) throws IOException{ InputStream socketIn=s.getInputStream(); return new BufferedReader(new InputStreamReader(socketIn)); } private PrintWriter getWriter(Socket socket) throws IOException{ OutputStream socketOut=socket.getOutputStream(); return new PrintWriter(socketOut,true); } private void outputfile(PrintWriter pw){ if(pw!=null){ String str="<?xml version=/"1.0/" ?>"+"/r/n"; str+="<!DOCTYPE cross-domain-policy SYSTEM /"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd/">"; str+="<cross-domain-policy>/r/n"; str+="<site-control permitted-cross-domain-policies=/"all/" />/r/n"; str+="<allow-access-from domain=/"*/" to-ports=/"*/" />/r/n"; //str+="<allow-http-request-headers-from domain=/"*/" headers=/"*/"/>/r/n"; str+="</cross-domain-policy>/r/n"; pw.write(str); pw.flush(); } } @Override public void run() { try { BufferedReader br=getReader(socket); StringBuffer sb=new StringBuffer(); char[] ch=new char[22]; br.read(ch,0,ch.length); for(int i=0;i<ch.length;i++){ sb.append(ch[i]); } String st=sb.toString(); if(st.indexOf("<policy-file-request/>")!=-1){ outputfile(getWriter(socket)); } } catch (IOException e) { e.printStackTrace(); } finally{ try{ if(socket!=null){ socket.close(); } }catch(IOException e){ e.printStackTrace(); } } } 

 

上面的是最核心的代码, csdn 不允许发附件,唉,要源代码的发邮件给我[email protected] 邮件内容需注明 tenbey.com

你可能感兴趣的:(socket,String,服务器,Flex,null,domain)