Actionscript 3 Can';t从浏览器连接到服务器
我已经创建了一个客户端和服务器, 如果我在Flash player单机版上运行客户机,效果会很好。 但是,如果我从本地主机、浏览器(使用wamp服务器)运行它,它将无法工作。 错误(在服务器端): 第64行是:Actionscript 3 Can';t从浏览器连接到服务器,actionscript-3,sockets,serversocket,Actionscript 3,Sockets,Serversocket,我已经创建了一个客户端和服务器, 如果我在Flash player单机版上运行客户机,效果会很好。 但是,如果我从本地主机、浏览器(使用wamp服务器)运行它,它将无法工作。 错误(在服务器端): 第64行是: var text:String = socket.readUTF(); 我不明白为什么通过浏览器它不起作用。当您通过浏览器使用套接字时,Flash不会立即将您正在发送的内容发送到服务器 首先,它打开第一个连接,并询问服务器是否可以连接。它发送一个 服务器必须回答如下问题: <?x
var text:String = socket.readUTF();
我不明白为什么通过浏览器它不起作用。当您通过浏览器使用套接字时,Flash不会立即将您正在发送的内容发送到服务器 首先,它打开第一个连接,并询问服务器是否可以连接。它发送一个
服务器必须回答如下问题:
<?xml version="1.0"?><cross-domain-policy><allow-access-from domain="YOURLOCALDOMAIN" to-ports="PORT YOUR SERVER IS RUNNING AT" /></cross-domain-policy>
根据blue112的回答,以下是我的解决方案:
…
while( (k = in.read(buff, 0, 1)) > -1 ) {
result += new String(buff, 0, k);
// Flash privacy policy
if(result.equals("<policy-file-request/>")) {
out.write("<?xml version=\"1.0\"?><cross-domain-policy><allow-access-from domain=\"*\" to-ports=\"12345\" /></cross-domain-policy>\0");
out.flush();
}
// Process message stuff
…
}
…
…
而((k=in.read(buff,0,1))>-1){
结果+=新字符串(buff,0,k);
//闪存隐私政策
if(结果等于(“”){
输出。写入(“\0”);
out.flush();
}
//处理消息内容
…
}
…
您需要在服务器端实现这一点。您试图连接的服务器是什么?它是my服务器,它的socketserver,actionscript3
…
while( (k = in.read(buff, 0, 1)) > -1 ) {
result += new String(buff, 0, k);
// Flash privacy policy
if(result.equals("<policy-file-request/>")) {
out.write("<?xml version=\"1.0\"?><cross-domain-policy><allow-access-from domain=\"*\" to-ports=\"12345\" /></cross-domain-policy>\0");
out.flush();
}
// Process message stuff
…
}
…