actionscript-3 - 如何从 as3 中的 XMLSocket 读取数据?

标签 actionscript-3 flex3

在使用 Socket 时,我能够读取数据为

while (socket.bytesAvailable) 
{
    textArea.text += socket.readUTFBytes(socket.bytesAvailable);
}

如何在使用 XMLSocket 时读取数据?使用 xmlSocket.toString() 就足够了吗?

最佳答案

不,使用 XMLSocket 接收数据是事件驱动的,您创建一个套接字,设置事件处理程序:

socket = new XMLSocket();   
socket.addEventListener(Event.CLOSE, closeHandler, false, 0, true);
socket.addEventListener(Event.CONNECT, connectHandler, false, 0, true);
socket.addEventListener(DataEvent.DATA, dataHandler, false, 0, true);
socket.addEventListener(IOErrorEvent.IO_ERROR, errorHandler, false, 0, true);
socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityHandler, false, 0, true);    

socket.connect(host, port);

您将在 dataHandler 中接收数据:

private function dataHandler(e: DataEvent): void {  
   var xml: XML = XML(e.data);
   ...
}

现在您可以使用任何您想要的方式处理 XML。发送更容易,但你仍然必须考虑到你在调用 connect 后并没有立即连接,你必须等到 connectHandler 被调用后再发送数据:

var xml: XML = ...
if (socket.connected) {
  socket.send(xml);
}

关于actionscript-3 - 如何从 as3 中的 XMLSocket 读取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6106935/

相关文章:

Flash 标签顺序更改

java - Flex 中的二进制套接字和策略文件

Eclipse 将分支从分支切换到主干

actionscript-3 - 在 Flex 3 的 TileList 中移动效果

actionscript-3 - 运行时加载外部资源并在 ActionScript 3 中重用预加载的资源?

java - AIR admob 问题 #3500 : The extension context does not have a method with the name cacheInterstitial

actionscript-3 - Actionscript:以恒定延迟从扬声器上的麦克风播放声音(通过缓冲区)

apache-flex - 闪存/Flex : "Warning: filter will not render" problem

actionscript-3 - ActionScript 代码的可破解性如何

actionscript-3 - AS3 阻止角色穿墙