[size=large]在 Adobe Flash Player 升级到 9.0.124 后,由于安全策略更改,原来 Socket 或 XmlSocket 的应用里的 http 方式加载安全策略的手段不能继续使用。更改如下:
1, 首先检测目标服务器的 843 端口是否提供安全策略
2, 如果 1 没有检测到策略,则检测 actionscript 是否使用了 Security.loadPolicyFile(xmlsocket://)手段提供安全策略,如果还没检测到,则使用第 3 步检测
3, 检测目标服务器目标端口是否提供安全策略。
检验的过程就是发送 “<policy-file-request/>\0”
[color=red]解决办法:[/color][/size]
1, 首先检测目标服务器的 843 端口是否提供安全策略
2, 如果 1 没有检测到策略,则检测 actionscript 是否使用了 Security.loadPolicyFile(xmlsocket://)手段提供安全策略,如果还没检测到,则使用第 3 步检测
3, 检测目标服务器目标端口是否提供安全策略。
检验的过程就是发送 “<policy-file-request/>\0”
[color=red]解决办法:[/color][/size]
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();//在服务器启动的时候执行