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

时间:2011-05-24 07:10:55

标签: actionscript-3 flex3

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

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

如何在使用XMLSocket时阅读数据?是否足以使用xmlSocket.toString()

2 个答案:

答案 0 :(得分:4)

不,使用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);
}

答案 1 :(得分:2)

socket.addEventListener(DataEvent.DATA, onData);

private function onData(event:DataEvent):void {
    trace(event.data);
}