使用Socket时,我能够将数据读取为
while (socket.bytesAvailable)
{
textArea.text += socket.readUTFBytes(socket.bytesAvailable);
}
如何在使用XMLSocket
时阅读数据?是否足以使用xmlSocket.toString()
?
答案 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);
}