Flex Socket <policy-file-request/> 60

在AdobeFlashPlayer升级到9.0.124后,由于安全策略更改,原来Socket或XmlSocket的应用里的http方式加载安全策略的手段不能继续使用。更改如下:

1,首先检测目标服务器的843端口是否提供安全策略

2,如果1没有检测到策略,则检测actionscript是否使用了Security.loadPolicyFile(xmlsocket://)手段提供安全策略,如果还没检测到,则使用第3步检测

3,检测目标服务器目标端口是否提供安全策略。

检验的过程就是发送“<policy-file-request/>\0”

解决办法:

public class Flex843 extends Thread  {
	 final byte[] xml = "<?xml version=\"1.0\"?><cross-domain-policy><site-control permitted-cross-domain-policies=\"all\"/><allow-access-from domain=\"*\" to-ports=\"*\"/></cross-domain-policy>\0".getBytes();
	public void run(){
		ServerSocket serverSocket;
		try {
			serverSocket = new ServerSocket(843);
			while(true){
				Socket socket=serverSocket.accept();
				OutputStream os=socket.getOutputStream();
				os.write(xml);
				os.flush();
				os.close();
				socket.close();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
(new Flex843()).start();//在服务器启动的时候执行

相关推荐