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

18

简单问题:Flash/ActionScript 是否支持 UDP 数据报套接字?

3个回答

19

这个问题早已经被提出,答案现在已经改变为“是”。对于那些偶然发现这个问题的人:

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。


5

是的,有点像。

FMS和Player 10的下一个版本将引入一种新的协议,即RTMFP(Real Time Messaging Flow Protocol),这是一种基于Amicima的MFP协议的低延迟、基于UDP的协议。Amicima在2006年被Adobe收购。

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


我可以问一下有什么不同吗? - Tom
RTMFP运行在UDP之上,因此它只具有UDP的子集功能。另一方面,它可以为您提供编写代码所需的功能,即Flash客户端之间的加密P2P。更多信息请参见http://en.wikipedia.org/wiki/Real_Time_Media_Flow_Protocol。 - SpliFF

5

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

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

然而,目前Adobe的UDP示例均为基于点对点的。UDP在点对点中具有优势,但在更大规模的多用户或DVE(分布式虚拟环境)中具有更多优势,因此希望未来能够重点关注它。

如果您想在游戏中使用UDP,Unity3D当前支持Web Player中的UDP。或者使用Java的jMonkeyEngine也支持它。还有即将推出的基于Web的Torque 3D可能也会支持它。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接