频道直达 - 学院 - 下载 - 交易 - 特效 - 字库 - 手册 -排名-工具- 繁體
网页教学网站开发 设为首页
加入收藏
联系我们
建站搜索: 常用广告代码   用户注册 | 用户登陆
您当前的位置:中国建站之家 -> 网站开发工具应用教程 -> Flash教程 -> XMLSocket 渐进 (上)

XMLSocket 渐进 (上)

作者:未知  来源:转载  发布时间:2005-8-9 20:37:00  发布人:acx

减小字体 增大字体

          今天就来点新鲜的....脱离一下后台的使用 :)
因为在网络上都没看到什么使用socket的教程或说明, 大致都只是简单的带过... 而如果只是说明从字典就可以得到的, 再过不久会因为忙而很少来... 就写给大家去慢慢研究吧
首先还是要按步骤来说明, 毕竟使用这个类的人还是很少... 需要从基本介绍说起, 在Flash提供了XMLSocket的类, 允许对服务器直接建立固定的连线, 所以这种固定连线方式就叫socket..我们可以通过这个socket传送或接收xml数据.. 传送数据的管道有两种, 一种大家已经很熟悉了...就是通过后台传送, 后台的连接是通过HTTP(Hypertext Transport Protocol), 这也是最基本的方式, 但这个方式的缺点就在于传送上会延迟... 最显著的例子就是再多人连线的情况下....因为后台需要更新数据了之后再把数据传给所指定的用户端, 所以造成在玩游戏时会断断续续的感觉, 此方法只适合制作在棋类游戏方面.... 另外一种就是我所要介绍的数据通过Socket传送, 你可以使用TCP(Transmission Control Protocol)直接以数据流的方式传送数据到服务器, 至于HTTP和TCP之间什么不同, 而为何TCP比较快呢?? 这个我不多说了... 你们可以去找些关于 Data Communication 或 Networking的书籍.... 然后看看里面怎么说明OSI MODEL的7个结构层, TCP是在Transport Layer, 而HTTP/FTP/SMTP等都在之上....(书籍: Data Communications and Networking 作者:Behrouz A. Forouzan)这本里面说得蛮详细的
再来我们需要一个服务器, 这个服务器需要打开一个端口让客户端进行连接... 会熟悉编程的朋友可以通过C, Perl或Java来编写属于自己风格的服务器, 当然我不会叫大家花时间再去编写了, 因为在网络上已经有提供一些服务器了...在这里提供给大家下载的网址中有些有提供说明:

  • Unity Socket Server -- JAVA, 可以从 http://www.moock.org/unity/ 这里下载到, 当然时常留意moock的朋友应该很清楚, 但需要购买, 试用版本有限制天数, 但功能是完整的... 另外一个免费的就是 http://www.moock.org/chat/moockComm.zip
  • FlashSock -- JAVA, 网址 http://sourceforge.net/projects/flashsock/ Unix 版本
  • AquaServer -- JAVA, http://www.figleaf.com/development/flash5 作者Branden Hall, 所提供的原文件版本已经很久没更新了 :(
  • MultiServer -- JAVA, http://www.shovemedia.com/multiserver/ 这个网址当中提供了使用教程, 我蛮喜欢的, 当中的教程是avatar聊天室的代码..即是以人物代表用户的聊天室 :)
  • Stray -- Perl, http://www.stray.ch/site/laboratory/flash_sockets.html
  • Tupps -- Perl, http://www.tupps.com/flash/faq/perlFlashSocketServer.zip
  • Swocket -- Python, http://swocket.sourceforge.net/
  • FlashNow -- C, http://www.nowcentral.com/ 和AquaServer一样蛮旧了 :p

    好啦...那么来开始切入主题吧, 在Flash中提供的XMLSocket很简单, 一个Flash也可以建立多个socket连线, 当然你必须先建立XMLSocket这个类以控制数据, 方法如下:
    var myConnection:XMLSocket = new XMLSocket();
    再来当然就是针对服务器进行连接, 所以我们会使用XMLSocket这个类所提供的connect()函数, 在字典当中可以得知两个参数的说明... 在这里不多说, 主要是让大家多看看字典, 但记得自己所设定的端口(port)最好是在1024之上, 因为1024以下的多数都是网页软件或组件所使用的端口
    myConnection.connect("www.super-tomato.com", 8888);
    指定了连接对象之后就要判断连接是否成功, 也就是应用onConnect事件
    myConnection.onConnect = function(success) {
    if(success) {
    trace("连接成功");
    } else {
    trace("无法连接");
    }
    }

    既然该连接的已经连接了, 接下来就是传送和接收数据的时候了.... 前面已经说了XMLSocket是以xml数据传送, 那么我们在使用send()函数的时候就必须把所要传送的数据换成xml
    myConnection.send(new XML("<MESSAGE />"));
    接收数据的时候不用设定什么循环... 因为XMLSocket在建立起Socket的时候就建立一个监听事件, 只要有数据从服务器传送过来就会自动的接收, 在接收的情况下我们使用onXML()或onData()来接收, 我个人建议是使用onData()来接收, 因为数据传到onData()是以String的方式, 如果要换成XML格式的话只要使用parseXML()就可以了, 伸缩性比较高, 而且也比较快捷~~~
    myConnection.onData = function(data) {
    var xmlData:XML = new XML();
    xmlData.ignoreWhite = true;
    xmlData.parseXML(data);
    }

    最后是如果用户退出的时候, 需要关闭socket, 方法很简单只要使用close()就可以了, 如果你还需要在关闭之后做某个动作, 可以使用onClose()事件... 当close()完成关闭之后onClose事件就会发生, 如:
    myConnection.onClose = function() {
    gotoAndPlay("bye");
    }
    myConnection.close();
    好啦...有了概念接下来就剩下两个部分了, 一是安装Socket服务器, 二是设定好客户端 要执行Socket服务器就必须先在机子上安装好 Java Runtime Environment(JRE), 如果是使用Mactintosh OS X的朋友就不需要安装了... 因为你们的系统中已经存在了, 如果是使用Unix或Linux系统的朋友就需要到 http://java.sun.com 找一下适合的版本, 安装步骤如下:
  1. 到 Sun 网站下载 JRE, http://java.sun.com/j2se/1.4.2/download.html
  2. 把下载好的 JRE 进行安装....
  3. 安装好之后进行以下设定
  • 检查你的JRE, 记录当中lib的路径, 如C:\Program Files\JRE\lib
  • 点 "我的电脑" 右键, 选择最后一个properties, 然后选择Advanced, 再选择Environment Variables, 如图:
    http://www.7880.com/Upload/2004_Pack/200481225712431.jpg" target=_blank>http://www.7880.com/Upload/2004_Pack/200481225712431.jpg" onload="if(this.width>screen.width-333)this.width=screen.width-333" border=0>
  • 然后看看 system variables 有没有一个叫CLASSPATH的, 如果没有就新增一个, 值设定为JRE的lib路径, 已经有这个变量的朋友就在值之后加上 ; 再填入路径.. Windows 98或ME的朋友在 c:\ 盘底下打开autoexec.bat加入
最后就是安装socket服务器, 主要是把之前我提供的服务器下载之后打开, 当中的jar格式文件丢到你们的lib文件夹当中, 再来把java文件和class文件放在一起, 如放在C:\盘下, 如果有设定路径的朋友最好不要放在有空格文件夹的名字当中... 因为JAVA对路径空格容易出错... 最后就是执行服务器, java <服务器文件名(class)> <端口(1024以上)> java CommServer 8888 要是启动之后,会看到这类讯息.... [12/8/2004 3:16:24] Attempting to Start Server [12/8/2004 3:16:25] Server Started on Port 8888 这样服务器就启动了 :) 如果有人连线进来也会从这个窗口看到讯息 [12/8/2004 3:25:49] 192.168.10.175 connected to the server. 好啦....上半部就说到这...你们慢慢去想吧

将本文收藏到QQ书签与更多好友分享
[打 印]
[] [返回上一页] [收 藏]
上一篇文章:MTV制做的几点建议
下一篇文章:FLASH游戏编程
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
精彩推荐
热门文章
· 注册码大全二
· 注册码大全四
· 注册码大全一
· 要10G免费网络硬盘的请进..
· 通过google 赶快来赚美金..
· 注册码大全十
· 头像-qq头像(qq新头像)4..
· 让你轻松架设FTP服务器1..
· 注册码大全三
· 梦幻背景图片7
· 卡通动物图片6
· 网页制作素材-按钮素材2..
· 让你轻松架设FTP服务器5..
· 风景图片8
· 注册码大全九
· 让你轻松架设FTP服务器2..
关注此文读者还看过
· Photoshop中用鼠标模拟手..
· 马云称促成雅虎eBay联姻..
· 妙用VBScript自制IE工具..
· 博客中国COO潭涌泉离职 ..
· 深入研究Application和S..
· Fireworks教程:制造炫彩..
· 使用 Fireworks 制作图标..
· CNET JSP BASIC:JSP与Ja..
· 登陆Google的关键:网站..
· 简单介绍JDK5.0中的内置..
· 谈谈sql查询的between
· 默多克寄MySpace厚望 但..
· jsp文件操作之写入篇
· ASP 3.0高级编程(六)
· PS自由变形工具巧绘中心..
· ASP中FSO的神奇功能 - 用..
相关文章
· 视频网站2年内将淘汰99% 上..
· 马云:淘宝网两年内收费 上市..
· 一四川女孩机智过人 上QQ网..
· 世界杯惊艳4分钟最后争夺 上..
· 全国国民阅读调查揭晓 上网..
· 网站新闻编辑须持证上岗 上..
· 众网友紧急救助5小时 上海博..
· 用 WebClient.UploadData 方..
· FreeBSD 上使用Kerberos 5认..
· Serv-U3.0的Domain设置 上
· 基于UNIX平台FTP服务器的建..
· FTP服务器如何实现安全性 上..
· 在 Linux 上安装Apache+Apa..
· Eclipse 3.0 上配置JSP开发..
· MYSQL初学者使用指南 上篇
· DW MX 2004的Flash动..
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 人才招聘
网站合作、内容监督、商务咨询:QQ: 9576619
Copyright ? 2005--2008 中国建站之家版权所有
粤ICP备05092265号