Erlang与As通讯解决消息粘包

在网络通讯中,消息粘包是个很常见的问题。文章将讲解Erlang与As通讯时如何解决消息粘包问题。
解决方法是在消息内容前加消息长度,所以发送的数据为 len + body。
erlang端很好解决,只需修改socket {packet, N}属性,当N为1、2、4时,erlang会自动给消息加上包头。
AS端的做法在发送消息前先转成bytes,再计算内容长度;接收数据时先获取包头,再获取后面的数据。
AS端发送数据:
var bytes:ByteArray = new ByteArray;
bytes.writeUTFBytes(data);
socket.writeShort(bytes.length);
socket.writeBytes(bytes);
socket.flush();
AS接收数据:
var len : int = socket.readShort();
var bytes : ByteArray = new ByteArray;
socket.readBytes(bytes, 0, len);
var data : String = bytes.readUTFBytes(bytes.length);

参考地址:

http://blog.csdn.net/mycwq/article/details/22821223

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值