Android 中的 ActionScript 套接字

Posted

技术标签:

【中文标题】Android 中的 ActionScript 套接字【英文标题】:ActionScript socket in Android 【发布时间】:2012-02-20 21:47:06 【问题描述】:

我有一个用 ActionScript 编写的 Flash 客户端应用程序,它使用 XMLSocket 类通过 TCP/IP 在端口 5750 上与服务器设备通信。例如,我可以在浏览器中运行 Flash 客户端并连接到互联网上的服务器。

由于最新版本的 android 支持 Flash,我希望当我们在 Android 设备上安装 Flash 客户端时,它可以工作。但是,连接尝试只是挂起。我目前在客户端没有任何诊断,只有正在运行的 Flash 应用程序。所以我们没有日志或标准错误消息。

服务器设备基本上是一个黑匣子,但很明显服务器永远不会从客户端获得请求。这表明客户端无法打开套接字。

基本的网络搜索表明,人们对这种情况知之甚少。对这里出了什么问题有任何想法吗?

例如,也许 XMLSocket 不能在 Android 中工作?还是安卓屏蔽了 5750 端口?还是 Flash Player 内置了某种沙盒或防火墙限制?

我们尝试了几种运行 Android 2.2-2.3 和 Android Flash Player 10-11 的不同 Android 设备。客户端是用 ActionScript 2 编写的。

【问题讨论】:

【参考方案1】:

这可能是安全设置问题

我想您在 Android 设备上运行的 Flash 客户端与服务器不在同一个域中。 Adobe 的 AS2 参考说明了一切:

XMLSocket.connect() 方法只能连接到 SWF 文件所在域中的计算机。此限制不适用于在本地磁盘上运行的 SWF 文件。 (此限制与 loadVariables()、XML.sendAndLoad() 和 XML.load() 的安全规则相同。)要连接到在 SWF 所在域以外的域中运行的服务器守护程序,您可以在服务器上创建允许从特定域访问的安全策略文件

设置服务器以与 XMLSocket 对象进行通信可能具有挑战性。如果您的应用程序不需要实时交互,请使用 loadVariables() 函数或基于 Flash HTTP 的 XML 服务器连接(XML.load()、XML.sendAndLoad()、XML.send()),而不是 XMLSocket班级。要使用 XMLSocket 类的方法,首先必须使用构造函数 new XMLSocket 来创建 XMLSocket 对象。

您的问题还有一些其他相关问题,值得一看:

XMLSocket working in firefox but not IE

Flash client XMLSocket not connecting to server

【讨论】:

以上是关于Android 中的 ActionScript 套接字的主要内容,如果未能解决你的问题,请参考以下文章

ActionScript 3 zoom for android

Android 的 Actionscript:如何在 sql 中存储“默认数据”?重点是啥? [关闭]

重叠声音 Actionscript 3/AIR

ActionScript 3 AS3:退出Android应用程序

ActionScript 3 退出应用程序AIR for ANDROID

ActionScript 3 适用于Android的Adobe Air文件配置