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 作者:弃天笑

Flash as3.0 事件的发送和处理

DOM3事件机制包括4个步骤:注册侦听器、发送事件、侦听事件、移除侦听器。 注册侦听器,即指定发出的事件由那个对象的哪个方法来接受。·As3.0的事件处理机制的形式 全部事件的侦听addEvent...
  • SilenceDXY
  • SilenceDXY
  • 2016年11月19日 15:51
  • 756

as3.0真正的解决加载GB2312编码乱码的问题源代码示例

请写出AS3加载GB2312编码的文本,如何才能真正的解决乱码问题。 AS3中,System.useCodePage 对url编码和escape编码的函数都没有影响了。不论什么设置,都仍然用ut...
  • weiming8517
  • weiming8517
  • 2014年10月08日 10:58
  • 2390

AS3 编码问题UTF-8、GBK

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

socket输入流中读取一个固定长度的字节

前段时间项目中用到socket编程,我用socket输入流读取一个固定长度的字节经常会遇到各种各样的错误:后面读取内容的错位,或者直接后面的内容读取不到等问题。...
  • u012061196
  • u012061196
  • 2016年04月22日 12:04
  • 2279

Flash AS3.0 Socket资源(1)——与Socket服务器建立连接

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

AS3 Socket 基础知识(很全面)

在讲AS3 Socket之前我们先来搞清几个概念,这有助于我们更加了解网络通信! 1、网络中进程之间如何通信? 首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通...
  • tao_627
  • tao_627
  • 2014年01月16日 16:33
  • 3968

Flash AS3.0 Socket资源(3)——从Socket服务器读数据

3.从Socket服务器读数据解决方法:对于Socket实例,先收到socketData事件,然后调用如下两个方法的一个,比如,readByte()或者readInt(),在事件控制器中确定不会去读过...
  • yaonai2003
  • yaonai2003
  • 2011年04月08日 16:13
  • 6123

socket 发送消息 DataOutputStream write vs writeUTF8 编码问题

public void reboot(String host) throws SocketException {  Socket socket = null;  DataOutputStream do...
  • xiechunmei13
  • xiechunmei13
  • 2011年03月01日 16:42
  • 3572

1.Socket网络编程之传递字符类型(图解与编码)

今天周六,放假。五天八小时的程序员生涯,我们还是很嗨的。没女票的我,又遇到这下雨天气,只能宅家里学习技术了。今天有兴复习了一下Socket技术。身为程序员小白的我在此记录下学习的历史。方便以后自己复习...
  • qq348843576
  • qq348843576
  • 2015年05月09日 09:50
  • 1497

AS3 socket一些细节记录

实际项目中AS3就实现一个TCPClient对象,大家借助flash.net.Socket实现一个TCPClient应该没什么问题。我就说一下有的人一下没注意的问题。 1. 字节序 以前和两个客户...
  • herm_lib
  • herm_lib
  • 2012年11月19日 23:03
  • 2772
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AS3.0的Socket通讯发送固定字符串(指定编码)
举报原因:
原因补充:

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