初学socket心得(一)

1、socket连接分为tcp和udp两种模式,其中tcp会自动分发并且发送的流是顺序发送的,udp完整发送(主要用的是tcp模式,这边就不讨论upd模式的了)

 


2、tcp模式下连续发送数据时,会把一个大数据自动分为几个数据块多次发送,也有可能把多个小数据合并在一块后一次发送,所以传输的数据格式需要封装,加上一个数据长度或者结束标志以便区分,以下是在as3客户端接收socket数据时的片段代码

 

 

var flag:String = "[/e]";//结束标志
			var aryData:Array = new Array();//这次接收到的数据组数
			var strMessage:String = socket.readMultiByte(socket.bytesAvailable,"utf8");//本次接收到的数据
			Debug.trace(strMessage);
			var aryMessage:Array = strMessage.split(flag);
			if (aryMessage.length == 1){
				//没有结束标志则缓存后等待下一次接收数据
				data += strMessage;
				return;
			}
			else{
				data += aryMessage[0];//添加上次还没接收完的数据
				aryData.push(data);
				for (var i:int = 1;i<aryMessage.length - 1;i++){
					aryData.push(aryMessage[i]);//如果这次接收到的信息包含多条完整的数据,则添加进来
				}
				data = aryMessage[aryMessage.length -1];//缓存的数据变成剩余为接收完整的数据
			}
			
			//本次接收到多少完整的数据,遍历执行
			for (var k:int = 0;k<aryData.length;k++){
				var jsonObj:Object = JSON.decode(aryData[0].toString());
				Debug.trace(jsonObj.cmd);
			}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值