`

AS3.0的Socket通讯发送固定字符串(指定编码)

    博客分类:
  • Flex
阅读更多

flash客户端与服务端传输中文出现乱码的问题

C++服务端每次接受一条字符串信息,需要固定字节
例如C++服务端需要接受一条用户名的信息,名字长度是32个字节,也就是说,C++服务端每次要 获取名字的时候
都是在socket中读取32个字节,不管flash客户端输入的用户名是否有32个字节]
这样的话,flash客户端就要做一些处理
也就是当用户输入用户名达不到32个长度时,我们必须给他补长度
起初我是用socket的writeUTFBytes方法写入字符串,然后用一个ByteArray补上剩余的长度
下面是代码
var msg:String = "my name is soda";
socket.writeByte(msg);
var len:int = msg.length;
//算出剩余长度
byte.length = 32- len;
socket.writeUTFBytes(msg) ;  //先发送名字
socket.writeBytes(byte);        //再发送补的长度

(其实这是一个蠢方法,当时比较急,没仔细看api造成的)
但是这样做问题就来了
在flash的字符串中,不管是中文还是英文,都是一个字或者字母算一个长度,但是实际上中文是占两个字节,英文占一个字节
这样发送中文时就会出现错误

后来改用另外一种写法,就完全解决了,同时也可以发送特定的编码集
var msg:String = "my name is soda";
var byte = new ByteArray();
byte.writeMultiByte(msg, "gb2312");  //指定字符编码集
byte.length = 32;
socket.writeBytes(byte);

这样就很简单,就是把要发送的文字先写进ByteArray里
然后指定他的字节长度
最后用socket把ByteArray发送出去
问题得到解决

分享到:
评论

相关推荐

    flash as3.0 socket编程

    Flash AS3.0 Socket 编程 Flash AS3.0 中的 Socket 编程是使用 ActionScript 3.0 进行网络编程的一种方式。它允许 Flash 应用程序与服务器之间建立连接,以便进行数据交换。下面是关于 Flash AS3.0 Socket 编程的...

    flashas3.0socket编程

    资源名称:flash as3.0 socket编程 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    UDP.rar_as3 udp_flash as3.0 UDP_flash发送udp_udp as3_windows as3.0

    这个"UDP.rar_as3 udp_flash as3.0 UDP_flash发送udp_udp as3_windows as3.0"的压缩包,看起来包含了一个名为"UDP.fla"的文件,这是一个Flash的源文件,可能是一个AS3的项目,用于演示或教学如何在Flash中使用UDP...

    C# 3.0 socket通讯程序例子

    在C# 3.0中,Socket类位于System.Net.Sockets命名空间下,它为开发者提供了发送和接收数据的API。Socket支持多种协议,包括TCP(传输控制协议)和UDP(用户数据报协议),其中TCP提供面向连接的服务,保证数据的可靠...

    c#使用一个socket同时发送字符串和文件

    本文将深入探讨如何使用一个Socket实例同时发送字符串和文件。在实际应用中,这通常是通过结合使用流(Stream)和序列化来实现的。 首先,我们需要理解Socket的工作原理。Socket是基于TCP/IP协议栈的,它提供了套接...

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

    本教程将详细讲解如何在VB.NET环境下创建一个简单的字符串发送和接收程序。 首先,我们需要引入必要的命名空间: ```vbnet Imports System.Net Imports System.Net.Sockets Imports System.Text ``` 然后,我们创建...

    ActionScript3.0 Socket编程

    【ActionScript3.0 Socket编程】是Flash平台中进行低级网络通信的一种方式,它允许开发者直接与服务器进行双向的二进制数据交换。在ActionScript3.0中,Socket编程涉及以下几个关键步骤: 1. **与Socket服务器建立...

    一段as3.0与c++socket通信的例子(as端代码)

    使用`writeUTFBytes()`或`writeUTF()`方法可以向服务器发送字符串数据。例如: ```as3 socket.writeUTFBytes("Hello, Server!"); socket.flush(); ``` 4. **接收数据**: 当服务器发送数据时,`data`事件会被...

    基于as3.0小游戏

    7. **网络通信**:通过Socket、XMLSocket或URLLoader类,AS3.0可以实现与服务器的通信,这对于多人在线游戏、高分排行榜等功能的实现非常关键。 8. **物理引擎**:虽然AS3.0本身不包含物理引擎,但可以集成第三方库...

    【Android】socket client发送一个字符串

    本文将详细讲解如何在Android客户端通过Socket发送一个字符串。 首先,我们需要了解Socket的基本概念。Socket是网络编程中的一个接口,它允许两个程序通过网络连接交换数据。在Android中,我们可以使用Java的Socket...

    FLASH AS3 SOCKET收发16进制示例

    `HEXtoString as3.as`这个文件可能包含一个函数,用于将16进制字符串转换为ByteArray,以便于Socket通信。 在AS3中,使用Socket类的步骤如下: 1. **创建Socket实例**:首先,你需要创建一个Socket对象,例如`var ...

    as3.0实例-入门可看

    7. **网络通信**:AS3.0提供了Socket、URLLoader等类来实现网络通信,这对于构建Web应用程序非常有用。 8. **错误处理**:良好的错误处理机制可以帮助开发者定位并修复问题。学习如何使用try-catch语句进行错误处理...

    socket传输字节和字符串

    通过指定合适的编码格式,我们可以保证字符串的正确传输。 `'com.tonystark.android:socket:+'`库为Socket通信提供了一些便利工具,可能包括更方便的API,优化的性能,或者额外的功能,比如错误处理、自动重连等。...

    android3.0socket通讯实现代码.pdf

    4. **Socket类**:`new Socket(serverAddr, 8000)` 创建了一个Socket实例,指定服务器的IP地址和端口号(8000)。 5. **输入/输出流处理**:通过 `BufferedWriter` 和 `OutputStreamWriter` 对象向Socket的...

    ActionScript 3.0 Socket 源码

    例如,`writeUTFBytes()`用于发送UTF编码的字符串。 ```as3 socket.writeUTFBytes("Hello, World!"); ``` #### 2. 写入缓冲区 写入数据后,需要调用`flush()`方法将缓冲区中的数据发送出去。如果不调用`flush()`,...

    android3.0socket通讯实现代码[定义].pdf

    Android 3.0 SDK提供了支持Socket通信的API,使得开发者能够创建能够发送和接收数据的客户端应用程序。以下是对这个代码的详细解释: 1. **初始化和布局**: - `Socket_10_13Activity`继承自`Activity`,是Android...

    西门子S71200PLC编程TCP IP通讯FB功能块 以字符串的格式直观显示发送接受数据 自动计算发送数据长度,简化发送不定

    西门子S71200PLC编程TCP IP...以字符串的格式直观显示发送接受数据。 自动计算发送数据长度,简化发送不定长数据过程。 接受不定长数据,转化为对应长度的字符串, 在控制过程中,只需要通过比较字符串来获取反馈状态。

    socket字符串传输

    此外,由于socket是字节流传输,所以发送字符串时可能需要先将其转化为字节序列(例如使用`utf8_encode()`),接收时再解码(如`utf8_decode()`)。 总的来说,"socket字符串传输"涉及到网络编程基础知识,包括TCP...

Global site tag (gtag.js) - Google Analytics