在使用 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/