XMLSocket
使用目的:XML通信连接与操作。
说明:XMLSocket类可实现用户端与服务器端的连接,这使得指定Flash Player的计算机可以与特定的IP地址或网段名称服务器计算机进行通信。XMLSocket类对象对于要求
实时通信的用户/服务器应用程序非常有用,如实时聊天系统,XMLSocket类对象,服务器必须执行可识别XMLSocket类使用的协议程序,XML消息通过TCP/IP连接发送,每个
XML消息都是一个完整的XML文件,以一个零(0)字符结束,通过一个XMLSocket连接发送和接收的XML消息的数量没有限制。XMLSocket对象接到服务器的方式和位置受一下
限制,XMLSocket.connect()方法只能连接到端口号大于或等于1024的TCP连接端口,XMLSocket.connect()方法只能连接到SWF文件所在的同一网段中的计算机。
语法结构:
XMLSocket对象.方法
构造XMLSocket对象:
XMLSocket对象名称 = new XMLSocket(服务器,连接端口)
var XMLSocket对象名称:XMLSocket = new XMLSocket(服务器,连接端口)
服务器 = 字符串。希望进行连接通信的服务器名称。
连接端口 = 整数。通信的连接端口号。
属性Property:
connected 属性:布尔值 说明:判别XMLSocket对象是否已完成通信连接。只读
方法Method:
XMLSocket() 参数:服务器,连接端口 说明:构造XMLSocket对象。
close() 参数:无 说明:关闭XMLSocket对象的通信连接。
connect() 参数:服务器,连接端口 说明:使用指定的TCP连接端口(必须为1024或更高的连接端口)建立一个到指定Internet服务器的连接,并根据是否成功建立了连
接返回true或false,如果参数服务器指定null,则与调用XMLSocket.connect()方法是SWF文件所在的主机连接。
send() 参数:XML对象/数据 说明:将指定的XML对象或数据转换成字符串,并将其传输到服务器(字符串后方会加入一个零(0)字符),如果参数值是一个XML对象,
则该字符串是此XML对象的XML文本表示形式,send方法不会返回数据是否传输成功的信息。
范例:
var myXMLSocket:XMLSocket = new XMLSocket();
建立XMLSocket对象myXMLSocket。
var myXMLSocket:XMLSocket = new XMLSocket("http:// www.virtest.cn",1024);
建立XMLSocket对象myXMLSocket,并与www.virtest.cn服务器的TCP1024端口进行连接。
var myXMLSocket:XMLSocket = new XMLSocket();
myXMLSocket.connect("http:// www.virtest.cn",1024);
建立XMLSocket对象myXMLSocket,通过connect方法与www.virtest.cn服务器的TCP1024端口进行连接。
myXMLSocket.cloes();
关闭XMLSocket对象myXMLSocket的连接通信。
myXMLSocket.send(myXML);
myXMLSocket对象myXMLSocket的send方法将myXML对象转换成字符串并传送到服务器。
if(myXMLSocket.connected){
trace("连接成功");}
判断XMLSocket对象myXMLSocket是否完成通信连接,如果已完成通信连接,则在输出对话框中显示“连接成功”信息。
Socket
要说as3的socket发送汉字,首先得认识as3的两个类:flash.net.Socket和flash.utils.ByteArray,这两个类的协作关系就是ByteArray
将字符串(包括汉字)按照特定的编码格式转化成字节数组,然后Socket类将这个字节数组发送出去。整体思路是很简单的。
java与as3的socket通信
as3 与java 都提供了Socket类用于网络通信, 但两者的使用也有较大的不同. 为了方便两者的通信, 我在做了一些实验的基础上, 写下获得的经验,以免忘记.
as3 的socket 读写数据方法常用的有四个: readUTF, writeUTF, readUTFBytes, writeUTFBytesjava 的socket 输入输出流常用BufferedReader 和 DataOutputStream 包
装, 以提高读写效率
如:
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
DataOutputStream writer = new DataOutputStream(socket.getOutputStream());
as3 方写数据时用writeUTFBytes 方法, 此时java 方读数据用reader.readLine() 阻塞式方法.
as3 方写数据时用writeUTF方法, 此时java 方应改用DataInputStream 类包装输入流, 因为BufferedReader 不提供读取UTF数据的方法.
java 方写数据时用writeUTF方法, 此时as3 方读数据用readUTF方法, 但此种模式有个弊端, 就是如果java方连续调用了n(n >= 2)次writeUTF方法,而as3方因来不及读取,
则最后只是第一次写入的数据被读取.
java 方写数据时用writeBytes, 此时as3 方读数据用readUTFBytes方法读取数据, 可以这样读取: msg = socket.readUTFBytes(socket.bytesAvailable).