首页 > 网站 > WEB开发 > 正文

24.2.发送数据

2024-04-27 13:47:00
字体:
来源:转载
供稿:网友
问题
我要发送数据给socket服务器
解决办法
对于Socket对象,是使用write方法(writeByte( ), writeUTFBytes( ), 等等) 把数据写入到缓冲区,再通过flush( )方法发送数据,对于XMLSocket对象使用send( )方法。
讨论
Socket和XMLSocket类各自定义了不同的APIs来发送数据,首先看一下Socket的API :
当使用Socket对象发送数据时必须先把数据写到缓冲区,Socket类定义了一系列方法用于写数据,每个方法都是写入不同类型的数据,这些方法是writeBoolean( ), writeByte( ), writeBytes( ),writeDouble( ), writeFloat( ), writeInt( ), writeMultiByte( ), writeObject( ), writeShort( ), write-
UnsignedInt( ), writeUTF( ), 和writeUTFBytes( ) 。每个方法都接受一种类型的参数, 如
writeBoolean( )接受布尔型参数,writeByte( ), writeDouble( ), writeFloat( ), writeInt( ), writeShort( ),和writeUnsignedInt( )接受数字参数,writeObject( )方法接受对象参数,writeBytes( )方法允许传递一个ByteArray类型参数以及偏移量和长度,如下面的写法:
+展开
-ActionScript
socket.writeBytes(byteArray, 0, byteArray.length);

writeUTF( )和writeUTFBytes( )方法写入字符串,每个方法接受一个字符串参数,writeUTFBytes( )方法写入字节形式的字符串,writeUTF( )方法写入字节数字。

writeMultiByte( )方法也是写入字符串数据,但可以不使用默认字符集,该方法接受两个参数:
字符串和指定字符集编码,下面的例子写入Unicode编码的字符串:
+展开
-ActionScript
socket.writeMultiByte("example""unicode");

利用Socket对象,完全可以用ActionScript写出一个Telnet和POP客户端,这两个协议都是以ASCII字符为基础的,例如,连接一个POP服务器后,可用下面的代码执行USER命令:
+展开
-ActionScript
// POP servers expect a newline (/n) to execute the preceding command.
socket.writeUTFBytes("USER exampleUsername/n");

写入的数据实际上还没发送到服务器上,每个方法都死把数据累积到Socket对象上,例如下面的四个代码并没有把数据发送出去:
+展开
-ActionScript
socket.writeByte(1);
socket.writeByte(5);
socket.writeByte(4);
socket.writeByte(8);

当要发送数据时,必须调用flush( )方法,flush( )方法发送所有的数据并清空缓冲区:
+展开
-ActionScript
socket.flush( );

XMLSocket类发送数据就比较简单了,发送数据的方法为send( ),send( )方法接受任意类型的数据类型,它会把参数转换为字符串并发送给服务器,一般这个参数是一个XML对象:
+展开
-ActionScript
xmlSocket.send(xml);

实际上发送的数据类型是由服务器所决定的,如果服务器接受XML 数据,那必须发送XML 数据,如果服务器接受URL-编码数据,则必须发送URL-编码数据。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表