Flex Socket 60

在 Adobe Flash Player 升级到 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();//在服务器启动的时候执行

你可能感兴趣的:(java,socket,Flex,Security,actionscript)