AS3中Socket与XMLSocket问题总结

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).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值