Adobe AIR、URLRequest 和本地端口

Posted

技术标签:

【中文标题】Adobe AIR、URLRequest 和本地端口【英文标题】:Adobe AIR, URLRequest, and local ports 【发布时间】:2011-07-05 12:08:13 【问题描述】:

我正在考虑使用 Adob​​e AIR 编写一个应用程序,但我想先弄清楚这在该平台上是否可行。 (大多数是 Flash 和 AIR 的新手)

我想做的是提前知道URLRequest 将使用什么本地端口。如果可能的话,我想保持连接打开并继续使用同一个套接字。

我基本上想要完成的是提前进行一些 NAT 遍历和端口协商。协商好客户端和服务器后,我希望它们连接并基本上以点对点的方式使用 HTTP 来流式传输媒体,例如以下示例:

var s = new air.Sound(); 
var url = "http://www.example.com/sounds/bigSound.mp3"; 
var req = new air.URLRequest(url); 
var context = new air.SoundLoaderContext(8000, true); 
s.load(req, context); 
s.play();

问题是我看不到这种情况发生,除非我可以从 AIR 获得一些关于它计划使用哪些端口的信息。我可以创建自己的Socket 连接到服务器并使用它们,但我需要一种方法来利用 Sound 框架以相同的方式从套接字流式传输。

想法?想法?谢谢!

【问题讨论】:

【参考方案1】:

即使您设法猜测 AIR 将在您的设备上使用哪个端口,它也不会很有帮助,因为您的 NAT 很有可能将其转换为另一个值 IF您的 AIR 设备有一个私有 IP 地址。

如果您的 AIR 服务器具有公共 IP 地址,则不会发生此问题。大多数情况下,您可以将服务器的 NAT/路由器配置为按原样转发流量。来自 WAN 的端口扫描会很快告诉您使用了哪个端口。

如果您想“劫持”一个由 AIR 本身创建的出站连接,那么您可能会尝试让它联系您已实现的特殊服务器对等点,该对等点将转发来自和向其的流量。不简单,但可能。基本上你会收集服务器在 NAT 上打的洞。

【讨论】:

感谢您的信息。我决定用 Java 小程序来解决这个问题,至少现在是这样。我似乎无法从 AIR 应用程序中获得足够的能量来进行 NAT 遍历。 有道理。通常,当您无权访问源代码并且源不处理 NAT 遍历时,这通常是一个无望/非常复杂的情况。

以上是关于Adobe AIR、URLRequest 和本地端口的主要内容,如果未能解决你的问题,请参考以下文章

ActionScript 3 Adobe AIR - 加载本地文本文件

ActionScript 3 Adobe AIR:在本地保存数据片段

ActionScript 3 Adobe AIR - 将文本保存到本地文本文件

Adobe AIR-将文本保存到本地文本文件

Adobe Air Application的任何框架?

有没有办法从Adobe Air(flash)android应用更新到Unity3d应用,并保留共享对象中的本地保存?