是否可以在 Flash/ActionScript 中使用 UDP?

Posted

技术标签:

【中文标题】是否可以在 Flash/ActionScript 中使用 UDP?【英文标题】:Is it possible to use UDP in Flash/ActionScript? 【发布时间】:2010-10-28 18:25:17 【问题描述】:

快速提问:是否有可能在 Flash/ActionScript 中创建 UDP 数据报套接字?

【问题讨论】:

【参考方案1】:

这个问题很久以前就被问过了,现在答案变成了是。对于偶然发现这个问题的其他人:

DatagramSocket 类启用 UDP 通信。例如:

var datagramSocket:DatagramSocket = new DatagramSocket();
datagramSocket.bind(3333, "127.0.0.1");
datagramSocket.addEventListener(DatagramSocketDataEvent.DATA, onUDPReceived);
datagramSocket.receive();

注意:DatagramSocket 仅适用于桌面版 AIR,不适用于设备或 Flash Player。

【讨论】:

【参考方案2】:

在撰写本文时,答案是否定的。

BinarySocket 和 Xml Socket 都是基于 TCP/IP 的。正如 SpliFF 提到的,UDP 被添加到 Flash 10 中,主要用于 Flash Media Server 工具和 RTMFP。 Adobe Stratus 是迄今为止该协议的一个示例。 http://labs.adobe.com/technologies/stratus/

但是,Adobe 当前的 UDP 示例都是基于点对点的。 UDP 在 P2P 中具有优势,但在更大规模的多用户或 DVE(分布式虚拟环境)中更是如此,因此希望它成为未来的重点。

如果您希望游戏使用 UDP,Unity3D 目前在网络播放器中支持 UDP。或者使用 Java 的 jMonkeyEngine 支持它。 Torque 3D web based 即将推出也可能支持它。

然而,答案已经变成了肯定的;要了解现在这是如何实现的,请参阅 ericsoco's answer 了解如何使用 DatagramSocket 来实现这一点。

【讨论】:

【参考方案3】:

是的。。

FMS 和 Player 10 的下一个版本 将引入一个新协议 RTMFP, 代表实时消息 流协议。这是一个低延迟, 基于 UDP 的协议 Amicima 的 MFP 协议。阿米西玛是 2006 年被 Adob​​e 收购。

请注意,作为“基于 UDP 的协议”,它不是原始 UDP 实现。

【讨论】:

请问有什么区别? RTMFP 在 UDP 之上运行,因此它只有 UDP 功能的一个子集。另一方面,它为您提供的功能节省了您编写代码的时间,即闪存客户端之间的加密 p2p。更多信息请参阅en.wikipedia.org/wiki/Real_Time_Media_Flow_Protocol

以上是关于是否可以在 Flash/ActionScript 中使用 UDP?的主要内容,如果未能解决你的问题,请参考以下文章

Flash ActionScript 2 的压缩和解压缩工具

Flash/ActionScript 中的类似 QTVR 的全景图?

《Flash ActionScript 3 殿堂之路》一,二章 语言基础

ActionScript 3 使用Flash / Actionscript 3进行3D翻转效果

堆叠动态文本字段 Flash/ActionScript 3

将变量从 HTML 传递到 Flash ActionScript 3.0