AS3套接字和策略文件请求到C#服务器
这个问题快把我逼疯了!我已经阅读了关于堆栈溢出的所有问题,但我仍然被卡住了 我的as3程序运行得很好,但当我完成它并将其放在服务器上时,它开始请求这个著名的策略文件 AS3脚本:AS3套接字和策略文件请求到C#服务器,c#,actionscript-3,flash,sockets,C#,Actionscript 3,Flash,Sockets,这个问题快把我逼疯了!我已经阅读了关于堆栈溢出的所有问题,但我仍然被卡住了 我的as3程序运行得很好,但当我完成它并将其放在服务器上时,它开始请求这个著名的策略文件 AS3脚本: socket.addEventListener(Event.CONNECT, onConnect); socket.addEventListener(Event.CLOSE, onClose); socket.addEventListener(IOErrorEvent.IO_ERROR, onError); socke
socket.addEventListener(Event.CONNECT, onConnect);
socket.addEventListener(Event.CLOSE, onClose);
socket.addEventListener(IOErrorEvent.IO_ERROR, onError);
socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecError);
socket.addEventListener(ProgressEvent.SOCKET_DATA, onResponse);
socket.connect( MYHOST, 4242 );
C#服务器代码:
TcpListener serverSocket = new TcpListener(4242);
TcpClient clientSocket = default(TcpClient);
serverSocket.Start();
clientSocket = serverSocket.AcceptTcpClient();
NetworkStream networkStream = clientSocket.GetStream();
StreamReader read = new StreamReader(networkStream, Encoding.UTF8);
StreamWriter write = new StreamWriter(networkStream, Encoding.UTF8);
response = read.ReadLine();
if (response.Contains("policy"))
{
write.Write("<?xml version=\"1.0\"?><cross-domain-policy><allow-access-from domain=\"*\" to-ports=\"*\" /></cross-domain-policy>\0");
write.Flush();
clientSocket.Close();
return;
}
但是,当我执行connect()
时,它会被卡住,并且从不请求策略文件。在我关闭AS3应用程序后,我的服务器会看到请求,但连接已关闭。就像客户忘了冲马桶一样
有人能告诉我如何正确地解决这个问题吗?我遇到了一个与您的问题类似的问题。事实上,当在C#中运行Flash应用程序时,它会丢失大量不同于standart端口的请求。解决方案是不在Flash中使用此类请求。因此,您必须将它们放入C#,并使用Flash的ExternalInterface.call调用这些函数。当请求完成时,您的C#必须调用一个Flash函数,将req的答案作为参数传递。三天后,我终于发现了代码中的错误 悬赏50分,但没人注意到:-( 非常愚蠢,一个新手错误: 闪存应用程序请求策略文件时,不发送换行符,而是发送终止符“\0” 我正在读read.ReadLine();它一直读到“\n”,所以它卡住了
谢谢大家的回复。如果您尝试打开flash player策略日志,我认为这可能有助于澄清发生了什么。要打开策略日志,您需要在主目录中安装调试版本的flash和文件,且标志PolicyFileLog设置为1。谢谢您的回复,但我有一个问题。我不知道必须下载哪个软件包!!我有windows 7,没有下载!windows Flash Player 11.7 ActiveX控件内容调试器(适用于IE)windows Flash Player 11.7插件内容调试器(适用于与Netscape兼容的浏览器-FireFox和Chrome(但对于Chrome,必须禁用本机纸质插件)windows Flash Player 11.7投影仪内容调试器(对于不使用浏览器的调试)您所说的“将Flash应用程序运行到C#”是什么意思?主题初学者有一个C#服务器,而不是C#客户端和as3客户端。
Security.loadPolicyFile( "xmlsocket://myhost.com:4242");