【转载+原创】Flash 接收 Socket 数据包

本文记录了在C++与Flash通过TCP通信时遇到的问题,即Flash端使用Socket接收数据时,数据包未按预期分次触发ProgressEvent.SOCKET_DATA事件。通过分析TCP协议的流特性,解释了数据被合并成更少的“包”发送。解决方案是利用包头记录完整包长度,并在AS3中使用循环读取确保所有数据被正确处理。
摘要由CSDN通过智能技术生成

最近要写一个c++和flash通过tcp通信的程序, 遇到了不少的麻烦, 最后是解决了, 现把解决方法记录一下

需要解决的问题就是使用C++通过本地tcp连接向flash程序单向循环发送字符串, 遇到的问题就是在flash端接收的时候发现明明在C++端分好几次send的数据, 在flash一端的回调却只会调用一次。

 

转载自:http://cjmxp007.blog.163.com/blog/static/35473837201061054116916/

 

AS3.0 中使用Socket使用 tcp服务器协议,它是一种流协议,不停的将分片传输给客户端,作为流,发包是不会整包到达的,而是源源不断的。

它不同于UDP服务器协议,UDP作为数据包协议,整包到达。   

 

如果要使用Socket接收数据我们必须使用ProgressEvent.SOCKET_DATA 事 件。这个事件在帮助文档中是这样描述的 ——在套接字接收到数据后调度。
而事实却并非如此,做过一次尝试,服务器发送了20000次数据而 rogressEvent.SOCKET_DATA事件只产生了2000多次。
那么为什么说"服务器发送了20000次数据而 rogressEvent.SOCKET_DATA事件只产生了2000多次",
因为flash socket使用的TCP/IP协议, 这个协议跟UDP不同,它不是以单个"包"的形式发送数据,它发送的是"流数据",所以即便你发来20000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值