• flashjavasocket > 关于FLASH的XML介绍(二)
  • 关于FLASH的XML介绍(二)

    免费下载 下载该文档 文档格式:PDF   更新时间:2010-05-01   下载次数:0   点击次数:1
    文档基本属性
    文档语言:
    文档格式:pdf
    文档作者:廖鉅文
    关键词:
    主题:
    备注:
    点击这里显示更多文档属性
    关于FLASH的XML介绍(二)
    疯狂代码 http://CrazyCoder.cn/ :http:/CrazyCoder.cn/XMLJiaoCheng/Article21203.html 二,Flash中XML应用的原理 从Flash MX开始,对XML的支持已经初具规模,在Flash MX 2004中得到了加强,现在用Flash MX 2004来 做有关XML的应用已经很方便了.在Flash MX 2004中使用XML主要有两种方式,使用XML对象和使用 XMLSocket对象.使用XML对象应用的是HTTP的通讯方式,而使用XMLSocket对象应用的是Socket的通讯方 式,两者有比较大的区别. 下面分别介绍使用XML的两种方式. 1,使用XML对象 在网络应用中,使用XML对象应用HTTP的通讯方式,基本的通讯模式仍然是请求响应.先在Flash中对数 据进行处理,生成XML树,然后通过HTTP的通讯方式将XML文件发送到服务器端.在服务器端,先对接收到 的XML树进行解释,再根据流程做相应的操作,比如读写数据库或其他的资源,然后生成XML树,通过 HTTP的通讯方式将XML文件发送到Flash端.最后在Flash端接收XML文件,对XML树进行解释,对相应的数 据进行操作,如此循环. 下面分别介绍Flash端和服务器端的东西. A,Flash端:主要用到XML对象中的send(),load(),sendAndLoad(),onLoad(),onData()及其他操 纵XML树的方法与事件. 比如,生成XML树的代码如下: loginXML = new XML(); //生成一个XML对象 loginElement = loginXML.createElement("LOGIN"); //生成一个元素 loginElement.attributes.username = username; //设置元素的属性 loginElement.attributes.password = password; loginXML.appendChild(loginElement); //将所生成的元素加到XML对象 解释XML树的代码如下: loginReplyXML = new XML(); //生成一个响应的XML对象 loginReplyXML.onLoad = onLoginReply(); //设置响应XML对象下载事件的函数 function onLoginReply () { //对返回的XML文件进行操作 var e = this.firstChild; //解释返回的XML文件 if (e.nodeName == "LOGINREPLY" && e.attributes.status == "OK") { //根据返回的XML文件中的数据做相应的操作 gotoAndStop ("success"); } else { gotoAndStop ("loginFailed"); }} 有关XML数据的通讯代码如下:
    loginXML.sendAndLoad("http://www.XX.com/test.asp", loginReplyXML); //根据URL去取响应的XML文件到响应的XML对象中 B,在服务器端:常用的工具有Asp,Jsp,PHP,Perl等等脚本语言,它们所起的作用是操纵XML树和数据的 通讯. 下面以常用的Asp为例,解释XML树的代码为: //创建一个新的DomDocument对象,存客户端传送过来的XML请求 var xmlLogin = new ActiveXObject("Msxml2.DomDocument"); //从发送来的表单中取得数据 xmlLogin.loadXML(Request.Form()); //创建XML元素 var reElement = xmlLogin.documentElement; //提取用户名和密码信息 password = reElement.attributes[0].nodeValue; username = reElement.attributes[1].nodeValue; 生成XML树的代码为并发送的代码为: //创建一个新的DomDocument对象,向客户端发送 var xmlRepley = new ActiveXObject("Msxml2.DomDocument"); //创建一个简单的XML文件 xmlRepley.loadXML(""); //也是通过Write()的方法将XML文件返回到Flash端 Response.Write(xmlRepley.xml); C,还有一种情况是操作本地的XML文件,无非也就是生成,解释XML文件,得到所要的数据,只不过不需要 在服务器端做其他的操作了.比如,读一个本地的XML文件的代码为: playlist_xml = new XML(); //创建一个XML对象 playlist_xml.ignoreWhite = true; //省略空白 playlist_xml.onLoad = function(success) { //当加载XML文件成功的时候触发此函数 trace("success"); } playlist_xml.load("playlist.xml"); //加载本地的XML文件 值得说明的是,上面所涉及的代码都是举例而已,实际应用中的代码可能会复杂很多.但其中的原理都是 相通的,先生成XML文件,发送到服务器端,最后将服务器端返回的XML文件解释.只要思路清晰,做起来就 比较有效率,也不容易出错. 2,使用XMLSocket对象 在网络通讯中,使用XMLSocket对象的通讯方式为Socket,(所谓的Socket,可以将它想象为一条通路
    ,需要通讯的时候,在客户端跟服务器端建立一个连接,然后传送内容,通讯完毕后再撤销这个通路). Flash端跟服务器端的通讯模式为:先在Flash端跟服务器端建立一个Socket连接,生成XML文件后,通过所建 立的Socket连接将XML文件发送到服务器端,服务器端解释所接收到的文件,对数据进行相应的操作后,生成 一个XML文件,通过Socket连接发送到Flash端,Flash端解释XML文件后就得到所需要的数据.如此循环,操 作完成后关闭Socket连接.有点难懂,可以参考上图仔细想想. 下面分别解释在Flash端跟服务器端的东西. A,在Flash端:XMLSocket对象中,只有三个方法和四个事件,都是在Socket通讯时候用的,对XML文 件的操作还是要靠XML对象.比如,下面是一些简单的Socket操作: //声明XMLSocket对象 var mySocket=new XMLSocket(); //根据IP地址和端口连接服务器 mySocket.connect("127.0.0.1",9980); //连接成功与否的判断 mySocket.(sucess){ if(success){ trace("连接成功"); }else{ trace("连接失败"); } } //当接收到XML文档的时候,触发此函数 mySocket.(xmlDoc){ …… } B,在服务器端:选用服务器端的开发语言的标准是,起码要能够做Socket方面的操作(复杂的应用当中 还需要多线程,负载平衡等方面的东西).比较常用的有C/C++,java,其他的比如Delphi,Vb等工具对 Socket的操作就有点不方便.要开发一个高效率,稳定,可扩展的服务器端程序并不是一件很简单的事情,最 好能找点相应的资料深入学习一下,刚入门的时候,学习的重点可以放在Socket和多线程上面.下面以比较流 行的java语言来举例说明服务器端程序的简单架构: //运用多线程防止服务器阻塞 public class MultiThreadServer extends Thread {
    private ServerSocket listen_socket; public MultiThreadServer(int port) { try { listen_socket = new ServerSocket(port); //创建一个服务器端的Socket this.start(); //启动多线程 } catch(IOException e) //捕捉异常 { e.printStackTrace(); } } //下面为服务器监听线程的主程序. public void run(){ while(true) //死循环,一直在端口上监听有无客户端的Socket连接{ try{ //有客户端连接上来,创建一个相应的Socket,并启动响应的函数 Socket client_socket= listen_socket.accept(); SockState sstate=new SockState(client_socket); OperThread ōper=new OperThread(sstate); }catch(Exception ee){ System.out.print("MultiThreadServer run:"+ee.getMessage()); }}}} 3,XML在Flash中主要涉及两方面的应用,本地应用和网络应用. 本地应用主要是存取XML文件中所保存的数据,这里所指的数据并不一定限定是文本数据,也可以是图片 数据,声音数据等等.比如可以用Flash + XML来做图片管理器,歌曲列表管理器,用处还是比较大的,也比 较灵活. 网络应用是XML在Flash中的主要用途,它的优缺点在前面内容中已经提到.比如说,可以用杍 2008-10-20 2:41:18 疯狂代码 http://CrazyCoder.cn/
  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 PDF格式下载
  • 您可能感兴趣的
  • flashsocket  flashsocket协议  flashsocket  javasocket  javasocket编程  javasocket客户端  javasocket通信  javasocket多线程  javasocket超时  javasocket传文件