文档章节

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

ruyees
 ruyees
发布于 2014/10/05 11:47
字数 440
阅读 24
收藏 0

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://zuoqiang.iteye.com/blog/869541

共有 人打赏支持
ruyees
粉丝 3
博文 71
码字总数 0
作品 0
深圳
产品经理
私信 提问
循序渐进Java Socket网络编程(多客户端、信息共享、文件传输)

前言:在最近一个即将结束的项目中使用到了Socket编程,用于调用另一系统进行处理并返回数据。故把Socket的基础知识总结梳理一遍。 一、TCP/IP协议   既然是网络编程,涉及几个系统之间的交...

大数据之路
2013/01/25
0
9
基于TCP协议的网络程序

下图是基于TCP协议的客户端/服务器程序的一般流程: 图1.1 TCP协议通讯流程 建立链接的过程: 图1.2 建立连接的过程 服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等...

木木侠
2016/08/08
0
0
Python 的 Socket 编程教程

这是用来快速学习 Python Socket 套接字编程的指南和教程。Python 的 Socket 编程跟 C 语言很像。 Python 官方关于 Socket 的函数请看 http://docs.python.org/library/socket.html 基本上,...

彭博
2012/11/27
2.1K
1
Python 的 Socket 编程教程

这是用来快速学习 Python Socket 套接字编程的指南和教程。Python 的 Socket 编程跟 C 语言很像。 Python 官方关于 Socket 的函数请看 http://docs.python.org/library/socket.html 基本上,...

红薯
2012/10/24
46.6K
47
循序渐进Java Socket网络编程(多客户端、信息共享、文件传输)

一、TCP/IP协议   既然是网络编程,涉及几个系统之间的交互,那么首先要考虑的是如何准确的定位到网络上的一台或几台主机,另一个是如何进行可靠高效的数据传输。这里就要使用到TCP/IP协议...

baoyu
2013/11/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

VMware前路难测,多个厂家群雄逐鹿

在人们高谈Salesforce、亚马逊等新兴云计算厂商取得的成就时,以VMware、HPE和Cisco为代表的老牌厂商也在进行着自己的转型和变化,而且还取得一定的进展。以VMware为例,虚拟机巨头公布了第二...

linux-tao
14分钟前
0
0
Palindrome Linked List(leetcode234)

Given a singly linked list, determine if it is a palindrome. Example 1: Input: 1->2Output: false Example 2: Input: 1->2->2->1Output: true Follow up: Could you do it in O(n) ......

woshixin
16分钟前
0
0
【宇润日常疯测-003】PHP 序列化和 JSON 哪个更好?

有了 Swoole 以后,用我们熟悉的 PHP 就可以很方便地开发网络通信应用。有时候我们系统内部需要交换数据,那么,这时候问题来了,网络通讯的数据格式是选择 JSON 还是 serialize 呢? 一通分...

宇润
16分钟前
1
0
mybatis批量操作sql配置

在写批量sql操作时,遇到执行报错: <foreach collection="list" item="item" index="index" separator=";"> update t_xxx set column1=#{item.column1} where id= #{item.id} </foreach> 分......

lar555
29分钟前
2
0
L2TP VPN客户端配置

打开网络设置-->选择VPN-->添加VPN链接 配置完毕,打开更改适配器选项 右键-->属性 选中安全---允许使用安全协议,确定保存后连接vpn即可

阿伦哥-
33分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部