Adobe AIR、URLRequest 和本地端口
Posted
技术标签:
【中文标题】Adobe AIR、URLRequest 和本地端口【英文标题】:Adobe AIR, URLRequest, and local ports 【发布时间】:2011-07-05 12:08:13 【问题描述】:我正在考虑使用 Adobe 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:在本地保存数据片段