Actionscript 3 如何在as3中从XMLSocket读取数据?

Actionscript 3 如何在as3中从XMLSocket读取数据?,actionscript-3,flex3,Actionscript 3,Flex3,在使用套接字时,我能够按照以下方式读取数据: while (socket.bytesAvailable) { textArea.text += socket.readUTFBytes(socket.bytesAvailable); } 使用XMLSocket时如何读取数据?使用xmlSocket.toString()是否足够?否,如果xmlSocket接收数据是事件驱动的,则创建套接字,设置事件处理程序: socket = new XMLSocket(); socket.add

在使用套接字时,我能够按照以下方式读取数据:

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);
}

XMLSocket没有ProgressEvent.PROGRESS。这可能是真的,如果Adobe自己的文档在这方面不一致,请参见此处:。我也在此处留下了评论;)
var xml: XML = ...
if (socket.connected) {
  socket.send(xml);
}