`
happear
  • 浏览: 48106 次
  • 性别: 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,真是,不知道这个,以前还要转换。

相关推荐

    HPSocket.Net-develop_hpsocket.net_HPSocket_.net_socket_tcp_

    HPSocket.Net可能简化了Socket编程中的许多复杂问题,比如错误处理、连接管理、数据序列化与反序列化等。 在实际应用中,HPSocket.Net可能包含以下关键特性: - 多线程处理:支持多个并发连接,提高系统吞吐量。 - ...

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

    在C# .NET环境中,Socket是用于网络通信的基础组件,它提供了对TCP/IP协议栈的低级别访问。本文将深入探讨如何在C# .NET中使用Socket构建一个简单实用的框架,以提升项目的可扩展性、健壮性和容错率。 首先,我们...

    android与.net通过socket通讯

    本主题聚焦于"Android与.NET通过Socket通讯",这是一个涉及客户端(Android)和服务器端(.NET)之间实时数据交换的技术。Socket编程是一种网络编程接口,允许两个网络应用程序通过TCP/IP协议进行通信。以下是对这个...

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

    在VB.NET编程环境中,Socket是用于网络通信的重要组件,它允许程序通过TCP/IP协议进行数据传输。本示例源代码提供了客户端(socket_client)和服务器端(socket_server)的实现,帮助开发者理解如何在VB.NET中使用...

    VB.net socket编程

    VB.NET Socket编程是网络通信领域中的一个重要话题,它允许开发者创建能够进行数据交换的应用程序。在VB.NET中,Socket类提供了TCP/IP协议栈的基本功能,使得开发者可以构建服务器端(Server)和客户端(Client)...

    .net+socket web服务器

    【.NET + Socket Web服务器】是指使用.NET框架结合Socket编程技术构建的Web服务器。Socket是网络编程中的基本组件,允许应用程序通过TCP/IP协议进行通信。在ASP.NET中,结合Socket可以实现更底层、更定制化的Web服务...

    vb.net_socketvb.net_socket

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

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

    Socket编程是网络通信的核心部分,它允许两个或多个应用程序通过Internet进行通信。在VB.NET中,我们可以使用System...在实际应用中,还需要考虑异常处理、多线程、数据编码和解码等问题,以确保程序的稳定性和可靠性。

    java.net包socket通信

    在Java中,`java.net.Socket`类代表客户端Socket,用于建立与服务器的连接,并通过该连接发送和接收数据。而`java.net.ServerSocket`类则用于服务端,它监听特定端口的连接请求,一旦有客户端请求连接,就会创建一个...

    经典 VB.net 里面的socket通讯范例

    在VB.NET编程环境中,Socket通信是一种基础且强大的网络通信方式,尤其在TCP/IP协议栈上。本示例将深入探讨如何使用VB.NET实现基于TCP/IP的Socket通信,这对于开发网络应用,如聊天室、文件传输等是至关重要的。 ...

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

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

    .net使用的高性能大吞吐量socket

    3. 设置Socket为异步模式:调用Socket的SetSocketOption方法,设置SocketOptionName.SendCompletion和SocketOptionName.ReceiveCompletion选项,使Socket的发送和接收操作异步执行。 4. 启动工作线程:创建线程池...

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

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

    vb.net Socket服务端支持多客户端连接

    在VB.NET编程环境中,Socket通信是网络编程的基础,它允许应用程序通过网络进行数据传输。本教程将深入探讨如何创建一个Socket服务端,该服务端能够同时处理多个客户端连接,并能实时监控客户端的状态。 首先,我们...

    vb.net socket

    VB.NET Socket编程是一种在VB.NET环境下使用网络套接字(Socket)进行通信的技术。Socket是网络编程的基础,它允许应用程序通过Internet或局域网发送和接收数据。在VB.NET中,我们可以利用System.Net.Sockets命名...

    java和.net的socket通信

    在特定的情况下,比如分布式系统、跨平台通信或者需要低级别网络编程时,开发者可能会面临要在Java和.NET之间建立Socket通信的需求。Socket是网络编程的基础,它允许两个程序通过网络进行双向通信。 Socket通信的...

    android socket和.net

    本文将深入探讨如何使用Socket来实现Android客户端与.NET服务器之间的通信。 首先,让我们了解什么是Socket。Socket是计算机网络中的进程间通信(IPC)机制,它提供了一种在网络中两个程序之间建立连接并交换数据的...

    VB.net 里面的socket通讯

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

    vb.net通过socket实现简易多人聊天室(含心跳检测机制)

    语言vb.net (c#可以参考)+winform开发,利用socket进行多个客户端通信实现简易的聊天室,为了保证客户端与服务端连接正常,增加心跳检测机制、客户端定时断开超时未发送心跳包的客户端机制。 界面比较粗糙,仅供学习...

Global site tag (gtag.js) - Google Analytics