1

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

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

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

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

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

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

4

1 回答 1

2

这可能是一个安全设置问题

我想您在 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 在 Firefox 中工作,但不在 IE 中

Flash 客户端 XMLSocket 未连接到服务器

于 2012-03-08T22:30:28.290 回答