Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AS3套接字和策略文件请求到C#服务器_C#_Actionscript 3_Flash_Sockets - Fatal编程技术网

AS3套接字和策略文件请求到C#服务器

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

这个问题快把我逼疯了!我已经阅读了关于堆栈溢出的所有问题,但我仍然被卡住了

我的as3程序运行得很好,但当我完成它并将其放在服务器上时,它开始请求这个著名的策略文件

AS3脚本:

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");