Socket data事件和data读取测试

as3 中提供2种socket,xmlsocket和socket,xmlsocket的底层是socket实现;

1。tcp服务器协议,作为一种流协议,他不停的将分片传输给客户端,P作为流,发包是不会整包到达的,而是源源不断的

到UDP服务器协议,作为数据包协议,整包到达;具体参见:http://blog.csdn.net/hili2006

 

2。as3 中的socket的data事件是buffer有新到的数据就触发,有时候会有2个数据发过来,而只触发了一个data事件,所以as3中的socket是需要解码的,解码参见:http://blog.csdn.net/hili2006/archive/2010/04/20/5508715.aspx

测试代码如下:php tcp server&as3 socket

php:

 

$msg1 = "Welcome To ICA Server: 1 ";

$msg2 = "Welcome To ICA Server: 2 ";

$msg3 = "Welcome To ICA Server: 3 ";

 

@socket_write($msgsock, $msg1, strlen($msg1));

sleep(5);

@socket_write($msgsock, $msg2, strlen($msg2));

 

 

as3:

var counter2=0;

 

function data_handler(e:Event){ //如果php有sleep,那会接到2个data事件,并且byteavailable,如果

counter2++;                //没有sleep,则触发一个data事件,数据一起呈现到byeteavailable中

trace (counter2+"/n");

trace (e.target.bytesAvailable+"/n");

}

3。as3 的socket和xmlsocket类似,接到的数据中含有结尾符“/0”,在read数据的时候会当成结尾,结束读取返回,即使read中设定了length长度参数,并且当成读取了所有buffer数据处理,即bytesAvailable==0;

测试代码如下:

 

php:

 

$msg1 = "Welcome To ICA Server: 1 ";

$msg2 = "Welcome To ICA Server: 2 /0";

$msg3 = "Welcome To ICA Server: 3 ";

 

@socket_write($msgsock, $msg1, strlen($msg1));

@socket_write($msgsock, $msg2, strlen($msg2));

 

@socket_write($msgsock, $msg3, strlen($msg3));

 

as3:

function data_handler(e:Event){

trace (e.target.bytesAvailable+"/n");   //=152

trace ("receiving data: "+e.target.readUTFBytes(e.target.bytesAvailable));// 只有输出Welcome To ICA Server: 1

trace (e.target.bytesAvailable+"/n");//=0

}

4。如果as3 的data事件函数正在执行的时候,比如在此函数中用while循环解码,此时有新的数据发送过来,data事件还会触发么?触发的话,数据还有么?

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值