- 浏览: 599764 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
-
wzh051527:
我是大四实习生一个,自我感觉技术能力在第三年。。唯一不明白,为 ...
十年技术,不要再迷茫 -
room_bb:
.hrl文件怎么加入到编译规则里面?比如:pp.hrl文件-d ...
Erlang中用的makefile的一点解释 -
吉米家:
感觉帆软报表的flash打印就很不错哇,特别好用
JSP 实现报表打印 -
雪碧爱芬达:
苦逼程序员的辛酸反省与总结 -
mlyjxx:
...
十年技术,不要再迷茫
用flash去开发应用,,免不了网络通讯,特别是网络游戏,需要用到即使通讯。
as3提供了两个支持即时通讯的类:XMLSocket和Socket,前者其实是只支持发送字符串,而后者就强大多了,支持发送字节,相对来说比较底层,而这也给我们更多的发挥空间。
其实,flash socket的网络底层接受数据,就以与C++服务器通讯为例子,C++服务器一般会发一段一段数据过来,每段数据都是由一定结构组成的,一般是消息头和消息头,然后再逐步分层解析。
在这里,我只说接受网络底层的处理,一般一段数据前面,还有有一个4个字节左右的数据,表示的是后面网络流里的数据有多少....
看下简单示意图
我们网络底层需要做的处理,就是根据头4个字节判断出后面的数据大小,然后把那一整块取出来,抛给上层解析,然后又在不停地侦听,收到指定大小之后,又做类似的操作,下面看详细的代码
/**
* @(#)NetBottomHandle.as
* @author soda.C mail:sujun10@21cn.com
* @version 1.0
* <br>Copyright (C), 2007 soda.C
* <br>This program is protected by copyright laws.
* <br>Program Name:GameHall
* @data 2008-3-20
*/
package org.sujun.net
{
import flash.net.Socket;
import flash.events.ProgressEvent;
import flash.utils.ByteArray;
/**
* socket数据流里的底层处理,从这里接受到服务器的数据,满足条件后就会抛出需要的字节
* 对数据流的数据,不做任何处理
*/
public class NetBottomHandle
{
private var socket :Socket;
private var listener :Function; //接受网络解析出来的数据
private var msgLen :int; //消息长度
private var msgLenMax :int; //收到的消息最大长度
private var headLen :int; //消息头长度
private var isReadHead :Boolean; //是否已经读了消息头
private var bytes :ByteArray; //所读数据的缓冲数据,读出的数据放在这里
public function NetBottomHandle()
{
msgLenMax = 5000; //5000字节
headLen = 4; //4个字节
bytes = new ByteArray();
}
/**
* 设置一个网络通讯实例
*/
public function setSocket(socket:Socket):void
{
this.socket = socket;
//监听......
socket.addEventListener(ProgressEvent.SOCKET_DATA, onServerData,false,0,true);
}
/**
* 接受在网络层里收到的原始数据,传递过来的数据为描述长度,以及ByteArray对象functon(len,bytes)
* @param listener:接受数据函数
*/
public function receiverNetData(listener:Function):void
{
this.listener = listener;
}
/**
* 服务器发送过来的数据都在这里接收,最底层的
*/
private function onServerData(event:ProgressEvent):void
{
//一有收到数据的事件,就通过这个函数进行检验
parseNetData();
}
/**
* 解析网络数据流
*/
private function parseNetData():void
{
//如果需要读信息头
if(isReadHead)
{
if(socket.bytesAvailable >= headLen)
{
//读出指示后面的数据有多大
msgLen = socket.readUnsignedInt();
isReadHead = false;
}
}
//如果已经读了信息头,则看能不能收到满足条件的字节数
if(!isReadHead && msgLen <= msgLenMax)
{
//如果为0,表示收到异常消息
if(msgLen == 0)
{
//一般消息长度为0的话,表示与服务器出了错,或者即将被断开等,通知客户端,进行特别处理
listener(msgLen,null);
return ;
}
//数据流里的数据满足条件,开始读数据
if(socket.bytesAvailable >= msgLen)
{
//指针回归
bytes.position = 0;
//取出指定长度的网络字节
socket.readBytes(bytes, 0, msgLen);
listener(msgLen,bytes);
}
}
isReadHead = false;
//如果数据流里还满足读取数据条件,继续读取数据
if(socket.bytesAvailable >= headLen)
{
parseNetData();
}
}
}
}
发表评论
-
as3 Loader 加载资源后内存泄露无法释放的问题。
2014-06-21 10:30 691as3 Loader 加载资源后内存泄露无法释放的问题。 ... -
as3判断flash player版本的函数
2014-06-10 20:35 853//判断当前版本是否高于9.0.115.0为例子. pr ... -
CSS 中文字体的英文名称 (simhei, simsun) 宋体 微软雅黑
2014-04-03 15:25 1057华文细黑:STHeiti Light [STXihei]华文 ... -
as3.0的垃圾回收机制
2013-09-07 14:02 1549还是同样的博客,还是同样的作者(Daniel Sidhio ... -
AIR程序多开
2013-09-07 13:55 1016AIR应用通常不能像QQ那样能进行多开操作。为了让一个用AI ... -
starling性能优化总结
2013-07-22 14:06 1483在项目开发的过程中总结了一下starling的性能优化方案: ... -
AS3 Socket从零开始
2013-07-22 12:54 1115大家如果想学AS3 Socket直接在百度里搜一下,会找到很 ... -
绕开AS3安全沙箱 跨域加载SWF
2013-07-11 12:53 923AS3的安全沙箱的确是 ... -
解决AS3在ie中初始化时stageWidth和stageHeight为0
2013-06-14 09:23 1039先看下面的一段脚本,这是比较经典的初始化脚本: pac ... -
动态获取swc中的类
2013-05-25 10:32 987想通过代码生成,来获取swc中的类,并且可以作为普通类正常使 ... -
AS3 中字符串的format功能实现
2013-05-25 10:19 848使用C#的朋友都知道,string.Format();还是挺 ... -
总结调用Flash的几种方法
2013-05-02 16:18 1684一、Adobe 提供的方法 <object wi ... -
Flash3D错误集锦
2013-05-02 14:03 952VerifyError: Error #1014: 无法找到 ... -
使用scale拉伸之后的坐标问题
2013-04-12 09:38 1308最近发现论坛多了很多 ... -
30个实用的网页设计工具
2013-03-20 09:58 844作为一位网页设计师或开发者,你一直需要搜寻获取强大的网页设计 ... -
如何成为强大的程序员?
2013-03-11 11:27 736Aaron Stannard是新创公 ... -
漫谈重构
2013-03-11 11:09 886因为工作内容的原因, ... -
AS3使用谷歌API生成二维码
2012-12-10 16:24 1373二维码在新闻杂志,网站,网络广告,电视广告等地方随处可见 ... -
OOP的聚合原则
2012-12-10 16:21 940什么是聚合? 聚合可以很好地表达对象是什么和做 ... -
压缩速率追踪
2012-11-02 14:16 1490Flash Player 11.3添加了一个压缩和解压B ...
相关推荐
总的来说,"FLASH AS3 SOCKET收发16进制示例"涵盖了网络编程的基础,以及如何在Flash环境中处理16进制数据。了解这些概念和技巧对于开发需要实时通信的Flash应用程序至关重要。记住,安全性和性能优化也是使用Socket...
4. **事件驱动**:AS3的Socket通信是基于事件驱动的,例如Socket事件(ConnectEvent.CONNECT、DataEvent.DATA、ProgressEvent.PROGRESS等),这些事件帮助开发者处理连接状态、数据接收和发送过程。 5. **异常处理*...
标题中的“flash as3/java socket 聊天室”指的是使用Adobe Flash ActionScript 3(AS3)语言和Java的Socket编程技术实现的一个在线聊天应用程序。这个应用允许用户通过网络进行实时通信,创建一个基本的聊天环境。...
Flash AS3.0 Socket 编程 Flash AS3.0 中的 Socket 编程是使用 ActionScript 3.0 进行网络编程的一种方式。它允许 Flash 应用程序与服务器之间建立连接,以便进行数据交换。下面是关于 Flash AS3.0 Socket 编程的...
在Flash ActionScript3游戏开发中,Socket通信是实现客户端与服务器之间实时互动的重要技术手段。本文将深入探讨AS3中的Socket通信方式,特别是利用XMLSocket进行网络交互的细节。 首先,XMLSocket是AS3中用于低级...
AS3中的`Socket`类是Flash Player 9引入的新特性,用于创建基于TCP/IP协议的网络连接。Socket连接允许应用程序直接与远程服务器进行低级别的数据通信,而不依赖于特定的应用层协议,如HTTP或HTTPS。这种直接的连接...
本文将详细介绍AS3中的Socket编程基础,并通过具体的示例来解释如何实现与Socket服务器的连接、数据交换以及错误处理等关键步骤。 #### 二、基础知识 在开始深入探讨之前,我们需要了解一些基本概念: - **Socket**...
资源名称:flash as3.0 socket编程 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
在C#中,Socket编程是网络通信的基础,它允许应用程序...以上就是关于“C# Socket 多线程 分包 发送/接受数据”这一主题的详细解释。在实际开发中,理解和掌握这些知识点对于构建高效、可靠的网络应用程序至关重要。
flash actionscript3 as3通信 教程 socket与服务器通信, 多个swf之间通信.zip
### AS3使用Socket的简单例子 #### 知识点概览 - **AS3 Socket编程基础** - **创建与配置XMLSocket对象** - **事件监听器的设置与使用** - **连接服务器及发送数据** - **接收服务器响应** #### 知识点详细解析 #...
总结来说,Java和AS3间的Socket通信涉及创建服务器和客户端Socket实例,处理数据流,并解决Flash Player的安全沙箱限制。通过合理的编程实践和配置,你可以实现可靠的跨平台通信,从而构建高性能的实时应用。
Socket底层协议Dll是计算机编程中用于网络通信的重要组件,它基于DLL(动态链接库)形式提供服务,使得应用程序能够实现跨平台的网络数据传输。DLL文件是Windows操作系统中的一种共享库,它包含了一系列预编译的函数...
### Flash AS3 Socket编程基础知识详解 #### 一、引言 在现代互联网应用开发中,实时通信技术变得越来越重要。而Socket编程作为一种实现客户端与服务器之间实时数据交换的有效手段,在Flash开发领域同样占据着重要...
在Flash Professional环境中打开FLA文件,我们可以看到相关的AS3代码和图形元素,这些代码可能是用来设置UDP连接,创建数据包,以及处理接收到的数据。 在AS3中实现UDP通信的步骤大致如下: 1. **初始化...
在Android开发中,Socket通信是实现设备间数据传输的重要手段,尤其在构建网络服务和进行设备间的实时交互时。本文将深入探讨如何在Android平台上创建一个Socket客户端,以及如何通过TCP协议进行数据的发送和接收。 ...
《Flash AS3 中文帮助文档》是针对Adobe Flash Professional CS3中的ActionScript 3.0编程语言提供的中文版API参考手册。ActionScript 3.0是Flash平台上用于创建交互式内容、动画和富互联网应用程序(RIA)的主要...
在IT行业中,网络通信是至关重要的一个领域,而Flash的Socket应用则是实现客户端与服务器间实时数据传输的一种技术。本文将深入探讨如何使用C#语言构建一个基于Flash Socket的服务器,以及AS3.0(ActionScript 3.0)...
AS3(ActionScript 3)和Java都是常用于创建跨平台应用的语言,而Socket编程则提供了底层的网络通信接口。本篇将深入探讨如何使用AS3与Java通过简单的Socket进行交互。 **AS3中的Socket通信** AS3是Adobe开发的脚本...
总之,AS3的Flash Socket结合HTTP分块下载技术,可以在不完整接收文件的情况下就开始处理数据,提高了用户体验。尽管随着HTML5的发展,Flash逐渐淡出舞台,但理解这种技术仍然有助于我们更好地理解和构建实时网络...