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);
}
/**
* 启动服务器
*/
}
服务器启动代码: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);
}
/**
* 启动服务器
*/
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货