从843以外的端口提供策略文件时,Flash二进制套接字连接失败
发布时间:2020-12-15 07:22:56 所属栏目:百科 来源:网络整理
导读:我正在尝试将Flash中的二进制套接字连接设置为服务于swf的服务器之外的服务器.按照Adobe关于套接字策略文件的文档,我从目标服务器的843端口提供此文件: !DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd" !--
我正在尝试将Flash中的二进制套接字连接设置为服务于swf的服务器之外的服务器.按照Adobe关于套接字策略文件的文档,我从目标服务器的843端口提供此文件:
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> <!-- Policy file for xmlsocket://socks.mysite.com --> <cross-domain-policy> <allow-access-from domain="*" to-ports="6666" /> </cross-domain-policy> 然后我使用以下AS3代码连接到6666端口: sock.addEventListener(Event.CLOSE,closeHandler); sock.addEventListener(Event.CONNECT,connectHandler); sock.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler); sock.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityErrorHandler); sock.addEventListener(ProgressEvent.SOCKET_DATA,socketDataHandler); sock.connect('myserver',6666); 这非常有效.但是当我尝试从843以外的端口提供策略文件时,事情变得很丑陋.如果我将策略文件服务器设置为侦听端口6669,并在尝试连接之前更改我的Flash代码添加此调用: Security.loadPolicyFile("xmlsocket://myserver:6669"); ..然后连接只能工作大约一半的时间,如果没有,我将收到安全错误#2048.我检查过这些实例,策略文件服务器甚至没有收到客户端返回xml文件的请求. 当服务于843或6669时,服务器代码完全相同.我检查了在xml字符串之后发送的空字节,我也尝试使用Adobe的示例策略文件服务器,结果相同. 解决方法
在使用网络分析工具后,我发现了答案:即使经过3秒超时,闪存也不会将失败请求的套接字关闭到843.
套接字需要几秒钟才能完全关闭.如果您尝试在此期间重新建立连接,即使您使用的是其他浏览器窗口,也会失败. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |