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

原创 2007年11月15日 22:35:00
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发送出去
问题得到解决
 
  
版权声明:本文为博主原创文章,转载必须声明出处和作者。地址:http://blog.csdn.net/sujun10 作者:弃天笑

AS3 编码转换函数

AS3 编码转换函数Tags: 函数, 编码as3.0新增公共类函数,用法类似与javascript里的escape、encodeURI、encodeURIComponent等...1.decodeU...

AS3 编码问题UTF-8、GBK

字符编码一直以来都是很混乱,非常让人令人头痛的问题,许多新手往往就会卡死在这个地方。出现乱码常见于读取、提交和写入这三个环节,稍微处理不好这个问题,结果都会演变变成乱码。 归根到底是由于各家使用的编码...

Flash AS3.0 Socket资源(2)——向Socket服务器发送数据

2.向Socket服务器发送数据. 解决方法: 对于Socket对象来说,通过是用write方法(writeByte(),writeUTFBytes( )等方法.)先向缓存区写入数据,然后使用flus...

Flash AS3.0 Socket资源(6)——处理使用Sockets时候引发的错误.

6.处理使用Sockets时候引发的错误.解决方法:使用try/catch处理I/O和EOF(end of file)错误.讨论:Socket和XMLSocket类对错误的处理很类似.不如,当调用co...

【转】Flash AS3.0 Socket编程

我们在使用ActionScript3.0进行Socket编程的时候需要关注下面的问题,我们将在今后的学习中逐个对下面的问题进行讨论,并尽量逐渐的改进我们的程序. 1.与Socket服务器建立连接. 2...

Flash Socket 底层接受数据的初级处理(as3.0)

flash去开发应用,,免不了网络通讯,特别是网络游戏,需要用到即使通讯。 as3提供了两个支持即时通讯的类:XMLSocket和Socket,前者其实是只支持发送字符串,而后者就强大多了,支持发送字...

as3.0 生成随机字符串类

  • 2013年01月17日 17:10
  • 6KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AS3.0的Socket通讯发送固定字符串(指定编码)
举报原因:
原因补充:

(最多只允许输入30个字)