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();//在服务器启动的时候执行