flex得到安全策略文件后不发送socket请求,要发送两次才能请求到服务器,第一次是得到安全策略文件,第二次发送socket请求才能请求道服务端的socket,
服务器启动代码:import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Vector;
import com.guiyuan.server.Server;/**
 * main函数,开启服务器
 * @author 桂圆
 *
 */
public class Main { 
/**
 * 获取客户端请求参数头
 * 进行跨域访问判断
 */
    BufferedReader reader;
    BufferedWriter writer;
    public static void main(String args[]) { 
String xml="<cross-domain-policy>\n"
+ "<site-control permitted-cross-domain-policies=\"all\"/>\n"
+ "<allow-access-from domain=\"*\" to-ports=\"*\" />\n"
+ "</cross-domain-policy>\n";
ServerSocket serverSocket;
Socket socket; 
try {
serverSocket = new ServerSocket(1119);
// 获取服务器的主机名和IP地址
    InetAddress address = InetAddress.getLocalHost();
while (true) {
// 监听并接受客户的请求
socket = serverSocket.accept();
                //跨域访问设置
PrintWriter printWriter=null;
                char[] c = new char[22];// 创建一个22位的 char 数组
     try {
                     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
      printWriter = new PrintWriter(socket.getOutputStream());
      bufferedReader.read(c, 0, 22);// 为跨域访问的消息头创建char数组,并进行截取
     } catch (IOException e) {
     e.printStackTrace();
     }
     // 进行跨域访问的判断
     if (new String(c).equals("<policy-file-request/>")) {
     System.out.println("xml 安全策略");
     printWriter.write(xml + "\0");
     //printWriter.flush();
     } else{
     System.out.println(socket.getPort());
    new Server(socket).start(); // 支持多线程
     } 
}
}catch (IOException e) {
fail(e, "不能监听!");
}

/**
 * 退出服务器
 * 
 * @param e
 *            异常
 * @param str
 *            退出信息
 */
public static void fail(Exception e, String str) {
System.out.println(str + " 。" + e);
}
 
/**
 * 启动服务器
 */


}