一千萬個為什麽

搜索

如何從as3中的XMLSocket讀取數據?

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

轉載註明原文: 如何從as3中的XMLSocket讀取數據?