AS3.0中使用Socket接收数据我们必须使用ProgressEvent.SOCKET_DATA事件。这个事件在帮助文档中是这样描述的 ——在套接字接收到数据后调度。
而事实却并非如此,做过一次尝试,服务器发送了20000次数据而rogressEvent.SOCKET_DATA事件只产生了2000多次。
那么为什么说"服务器发送了20000次数据而rogressEvent.SOCKET_DATA事件只产生了2000多次",
因为flash socket使用的TCP/IP协议, 这个协议跟UDP不同,它不是以单个"包"的形式发送数据,它发送的是"流数据",所以即便你发来20000次数据(也就是你所想象的20000个包),TCP协议也是将它视作"流"发送.
换句话说,你的20000次数据,实际上只被分割成了2000多个"包"来发送,因此socket收到了2000多个包,,因此只产生了2000多次的事件.
在局域网内,或者本机127.0.0.1(如果是internet的话,因为网络延迟,没法严格测试),
将服务器发"包"频率降低,,比如:10ms,或者20ms发送一次, 再试试发送2万个包,看看产生几次事件?
分享到:
相关推荐
org.eclipse.swt.browser.ProgressEvent.class org.eclipse.swt.browser.ProgressListener.class org.eclipse.swt.browser.PromptAuth2.class org.eclipse.swt.browser.PromptDialog.class org.eclipse.swt.browser....
loader.addEventListener(ProgressEvent.PROGRESS,progressHandler); } private function progressHandler(event:Event):void { loading.status=event.target.percent+"%" } private function ...
ocr.ProgressEvent += new tessnet2.Tesseract.ProgressHandler(ocr_ProgressEvent); m_event = new ManualResetEvent(false); ocr.DoOCR(image, Rectangle.Empty); // Wait here it's finished m_event....
unityContentLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onUnityContentLoaderProgress); unityContentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, ...
OpenFLWeb 视图 在您的 openfl 游戏中显示网页。 ##用 在您的 haxelib 中添加 OpenFLWebView。... addEventlistener ( ProgressEvent . PROGRESS , onProgress ); mWebView . addEventlistener ( Event . COM
25.4.3宿主程序中的安全许可 556 25.4.4全屏模式安全许可 557 25.4.5本地连接安全许可 557 25.5交叉域安全示例 558 25.5.1创建测试的SWF 558 25.5.2跨脚本访问测试 562 25.5.3文本载入测试 563 25.6小结 564 第26章...
主要介绍了简单解决新浪SAE无法上传文件的问题,不知道到底是新浪的BUG还是我个人的问题,分享给大家吧。
谷歌云消息链接到教程: 如何实现谷歌云消息
var onProgress = function ( percent , bytesUploaded , bytesTotal , progressEvent ) { } ; var onBeforeSend = function ( formData ) { return formData ; } ; //start upload $ . upload ( '/example/path...
cordova-plugin-zip 一个Cordova插件,用于在Android和iOS中解压缩文件。 安装 cordova plugin add cordova-plugin-zip ... var progressCallback = function(progressEvent) { $( "#progressbar