我有一个用ActionScript编写的Flash应用程序,它在端口5750上使用XMLSocket类通过TCP/IP与服务器设备对话。例如,我可以在浏览器中运行Flash客户端,并连接到Internet上的服务器。
由于最新版本的Android支持Flash,所以当我们在Android设备上安装Flash客户端时,我希望它能正常工作。但是,连接尝试只是挂起。我目前在客户端没有任何诊断信息,只有正在运行的Flash应用程序。因此,我们没有日志或标准错误消息。
服务器设备基本上是一个黑匣子,但是很明显,服务器从来没有从客户端获得请求。这表明客户端无法打开套接字。
一个基本的网络搜索表明,对这种情况了解不多。对这里出了什么问题有什么想法吗?
例如,也许XMLSocket只是在安卓系统中不起作用?还是Android阻止端口5750?或者Flash内置了某种沙箱或防火墙限制?
我们尝试了几种不同的Android设备,运行Android2.2-2.3和10-11。客户机是用ActionScript 2编写的。
发布于 2012-03-08 22:30:28
这可能是安全设置问题。
我认为在Android设备上运行的Flash客户端与服务器不在同一域中。Adobe的AS2引用告诉了所有信息:
XMLSocket.connect()方法只能连接到SWF文件所在域中的计算机。此限制不适用于运行在本地磁盘上的SWF文件。(此限制与loadVariables()、XML.sendAndLoad()和XML.load()的安全规则相同。)要连接到运行在SWF驻留域以外的域中的服务器守护进程,可以在服务器上创建允许从特定域访问的安全策略文件。
设置服务器与XMLSocket对象通信可能会对构成挑战。如果应用程序不需要实时交互,可以使用loadVariables()函数,或者使用基于Flash的XML服务器连接性(XML.load()、XML.sendAndLoad()、XML.send()),而不是XMLSocket类。要使用XMLSocket类的方法,必须首先使用构造函数新XMLSocket来创建XMLSocket对象。
你的问题还有几个相关的问题,值得一看:
https://stackoverflow.com/questions/9041180
复制相似问题