`
happear
  • 浏览: 47130 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

AS3与.net之间的Socket编码转换的endian问题

    博客分类:
  • AS3
阅读更多

    之前一直都是用.net,最近项目需要在C#和AS3之间建立socket通信,于是就研究了一下AS3的socket。用起来的时候,发现AS3的socket与C#的socket用法差别较大。但是这些都还说得过去,可是一个endian却是把我恶心了一番。

    由于对字符编码了解不多,我在试用AS3的socket的函数writeInt()的时候,C#端接收到的数字总是跟flash端发送的值不一致。我调试时发现同一个整数,flash端将其转换成的字节数组跟C#将其转换成的字节数组是刚好相反。曾经动了手动反转字节数组的念头,可是觉得AS3的socket也不该弱到这种地步吧,于是上网查找,可惜,搜索编码转换相关的一系列的关键字,很少见到讲AS3和.net互发数字的内容,都是在讲字符串怎么发的。

 

     横下心来,对AS3的socket对象一个属性一个属性的研究,发现了endian这个属性。再次搜索endian,拨云见日,终于被我发现了编码集中的正序、反序这个概念。网上讲了很多,这里不再一一列举。总而言之言而总之,就是编码时的字节数组的顺序有正反两种情况。风传是跟CPU有关,但是这个我们就不用关心了。

 

知道了这个,那就好办了,AS3中可以通过如下代码控制字节数组中的数据的写入或读出方式:

//client为外部声明的AS3 Socket对象 var arrBytes:ByteArray = new ByteArray(); client.readBytes(arrBytes);

//读取前设置endian client.endian=Endian.LITTLE_ENDIAN; //client.endian=Endian.BIG_ENDIAN; var i:int = arrBytes.readInt();

//每次读取都可以设置此次读取的endian

client.endian=Endian.LITTLE_ENDIAN;

var d:int = arrBytes.readInt();

 

 

       AS3的Socket的endian有两个值:LITTLE_ENDIAN,一个

BIG_ENDIAN,默认是BIG_ENDIAN。问题就出在C#端如果跑的是Intel的cpu

(通常都是),C#的BitConverter是LITTLE_ENDIAN。所以,在我把flash

端设置成LITTLE_ENDIAN后,AS3和.net之间终于可以正常的发送信息了。

 

至于C#端的代码,十分简单,不想花费时间再次发明轮子,这里就从略了。

 

1
0
分享到:
评论
1 楼 cloud21 2010-08-18  
HOHO,真是,不知道这个,以前还要转换。

相关推荐

    C# .NET中Socket简单实用框架的使用教程

    最近一个项目因为要用到Socket传输问题,所以决定学习一下,将自己学习的内容总结分享出来,下面这篇文章主要给大家介绍了关于C# .NET中Socket简单实用框架使用的相关资料,文中通过示例代码介绍的非常详细,需要的...

    android与.net通过socket通讯

    android与.net通过socket通讯

    HPSocket.Net-develop_hpsocket.net_HPSocket_.net_socket_tcp_

    C# 版socket 收发TCP协议有模版样例

    vb.net_socketvb.net_socket

    vb.net_socketvb.net_socketvb.net_socketvb.net_socketvb.net_socketvb.net_socketvb.net_socketvb.net_socketvb.net_socket

    .net+socket web服务器

    基于asp.net的socketweb服务器的设计与实现

    java.net包socket通信

    java.net包socket通信,基础客户端 和 服务端的通信传输实现

    在VB.NET下利用Socket实现简单的字符串发送接收程序

    在VB.NET下利用Socket实现简单的字符串发送接收程序

    VB.NET_Socket两程序间通讯源码.rar

    VB.NET_Socket两程序间通讯源码.ra。rsocket是两程序间通讯最好的通讯,比什么DDE通讯之类的好多了,现在的程序基本都是采样这种方式通讯。 1.服务端的socket接收处理程序+发送程序实例 2.客户端的socket发送程序...

    VB.net 里面的socket通讯

    一些人也许知道,socket这个概念最早是UNIX里面的。 用于实现TCP/IP协议族里面的通讯。 后来被各家公司抄了过去,比如微软 Sun之类的。 目前很多语言里面 ,都是使用socket实现TCP/IP通讯的。或者说大都有socket...

    基于ASP.NET和socket实现的unity多人联机游戏demo源码.zip

    基于ASP.NET和socket实现的unity多人联机游戏demo源码.zip 基于ASP.NET和socket实现的unity多人联机游戏demo源码.zip 基于ASP.NET和socket实现的unity多人联机游戏demo源码.zip 【资源说明】 McProject是unity工程...

    Socket文件传输源码 asp.net版

    Socket文件传输源码 asp.net版Socket文件传输源码 asp.net版Socket文件传输源码 asp.net版Socket文件传输源码 asp.net版Socket文件传输源码 asp.net版

    .net Socket文件传输源码

    .net Socket文件传输源码

    目前.NET最强SOCKET框架组“北风之神”(ZYSOCKET) 3.0 源代码

    现在不必了,因为 使用我的 吹着北风 而构思出来 的SOCKET框架 一切问题映刃而接 里面有2个例子 第一个例子看完 入门了 第二个例子看完 登堂入室了 2个例子代码量 小与100行(排除除了WINFROM 生存的代码) 赶快...

    vb.net中socket示例源代码.rar

    socket应用示例

    java和.net的socket通信

    java和.net的socket通信。 还不怎么完善,还望见谅

    基于vb.net的socket的聊天软件

    3 使用socket类作为基本通讯方法(TCP协议) 基于socket的TCP通讯是window编程的基本技术,通过该案例研究学习可以在掌握面向对象编程方法的同时,对通用协议进行了解。同学们可视时间、精力完成不同复杂程度的程序 ...

    VB.net socket编程

    基于VB.net的服务器端和客户端SOCKET通信例程,服务端启动侦听,客户端发送数据在服务器端即可收到。

    一次.net Socket UDP编程

    一次.net Socket UDP编程的10万客户端测试记录.包含客户端和服务器端,需要注意的是客户端里由于电脑端口问题,测试最好分多台电脑。 http://www.cnblogs.com/keyindex/archive/2010/12/15/1901875.html

    .NET Socket

    在.NET里面使用Socket通信,该例子书写了一个服务,将服务端所在的地址作为客户端需要进行连接的路径,默认不断的监听相应的端口号,以方便为客户端提供相应的通信服务。 多客户端进行聊天通讯 类似目前所使用的简易...

Global site tag (gtag.js) - Google Analytics