Flash Socket网络通信

一、需求和流程
主要目的就是接收协议和发送协议。在接收和发送协议的时候,我们都希望数据序列以一个完整的形式在一个数据包里面传送,这里暂叫数据包。根据我们的操作我们有两种数据包:一种是接收包,我们需要从中读出数据;另一种是我们可以向其中写入数据以发送给远程。一般情况下,接收的数据包需要有个处理器来读取数据和进行相关更新等操作,而与发送数据包对应的操作接收数据包应该看成是与之成对的。所以我们还需要一个包处理器用来成对的发送操作(接收包和发送包)

二、对象
根据以上描述我们需要至少四个对象:
1.PackageIn:接收包,可以从中读取数据。
2.PackageOut:发送包,可以向其中写入数据。
3.SocketHandler:协议处理器,用来处理该协议对应的成对的两个操作(有时候,接收和发送可能只有一个操作)
4.SocketManager:通信管理器,管理着所有的SocketHandler。
处理接收到的字节流并且解析成一个PackageIn数据包,并且交给对应的SocketHandler去处理。
对于给定的一个PackageOut数据包,发送出去给远程。

三、难重点
1.可能最复杂的就是处理到的字节流并解析成接收数据包了,其实该过程也很简单:
当接收到字节流后,把它读出写到一个已经准备好的ByteArray中。然后从中读出包直到Buffer中信息不够无法读出一条协议的完整包,然后将Buffer中剩余的不足以构成一条包的字节序列,从Buffer的头部写入,以备在接下来收到字节流时继续插到后面。

2.包的结构
一般包都有两部分:包头和包内容。(包内容可以为空)。
包头包含以下信息:包长、协议Id和其他一些数据。
包内容就每条协议各有千秋了。

3.解析字节流到PackageIn
在解析的时候,重点是解析包头:包长和协议Id。

4.发送数据包PackageOut
在发送的时候,别忘了在包头更新:在字节流中写入正确的包长度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值