12.4.3 读写Socket

本文介绍了FlashPlayer如何使用Socket类进行网络通信,包括读取缓冲区的各种方法如readByte、readUTFBytes等,以及写入操作如writeUTF、writeObject。在服务器关闭连接时,FlashPlayer会接收到Event.CLOSE事件。关闭套接字可以通过调用close()方法,而重新连接则可以直接对原有Socket对象调用connect()方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  Socket类使用二进制协议的服务器互操作,可以使FlashPlayer能够连接到邮件和新闻服务器,编写根据不同的Internet协议(例如POP3SMTPIMAPNNTP)进行交互的代码。当服务器的服务可用,且套接字连接建立后,就可以向缓冲区中写入信息或者读取信息。缓冲区的数据需要双方配合操作。当服务器关闭连接时,FlashPlayer会接受到Event.CLOSE事件的通知。侦听这个事件,避免单方操作不存在的套接字连接。

1.读取缓冲区

读取是最常见的操作,毕竟FlashPlayer经常是作为接受服务的一方,从远程索取数据。

FlashPlayer中,可用的套接字读取操作很多,常见的有:

Ø         readByte():从套接字读取一个带符号字节。

Ø         readBytes(bytes:ByteArrayoffset:uint=0length:uint=0):从套接字读取length参数所指定的数据的字节数。

Ø         readUTF():从套接字读取一个UTF-8字符串。

Ø         readUTFBytes(length:uint):从套接字读取length参数所指定的UTF-8数据的字节数,并返回一个字符串。

Ø         readObject():从以AMF序列化格式编码的套接字读取一个对象。该参数返回一个无类型类型。写入前可以进行压缩。

Socket类提供bytesAvailable参数,标记输入缓冲区中可读取的数据的字节数。这个参数是只读的。对套接字输出缓冲区中积累的所有数据进行刷新。

2.写入操作

对于客户端的FlashPlayer而言,写入套接字意味着向服务器端发送数据。write方法写入的数据不会被立即传送。

针对套接字的写操作主要有:

Ø         writeByte(value:int):将一个字节写入套接字。

Ø         writeBytes(bytes:ByteArrayoffset:uint=0length:uint=0):从指定的字节数组写入一系列字节。

Ø         writeUTF(value:String):将参数指定的字符串写入缓冲。但实际上写入的信息要更多一些。以下数据写入套接字:一个无符号16位整数,它指示了指定UTF-8字符串的长度(以字节为单位),后面跟随字符串本身。

Ø         writeObject(object:*):以AMF序列化格式将一个对象写入套接字。

Ø         writeUTFBytes(value:String):将一个UTF-8字符串写入套接字。

这些数据在调用flush()方法之前一直被保存在队列中。使用flush()方法,对套接字输出缓冲区中积累的所有数据进行刷新。

当套接字使用完毕后,可以调用close()方法,关闭套接字连接关闭套接字。在调用close()方法时不会引发Event.CLOSE事件。

在调用close()方法之后,将无法读取或写入任何数据。但是套接字对象不会被删除。如果需要再次进行连接,不要重新建立套接字对象,只要直接对原有Socket对象调用connect()方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值