社区
网络及通讯开发
帖子详情
急急!为何Clientsocket接收的数据是乱码,服务器编码GB2312
jsnthy2002
2011-08-12 10:30:26
有一程序需要向unix服务器发送查询指令并且接收应答,客户端程序使用C++builder编写,使用ClientSocket控件,服务器可以接收到客户端发送的指令,但是收到的回复却是乱码,而且已被截断,长度很短。服务器传送数据编码是GB2312。客户端使用ClientSocket的receivebuff接收指令,请问我该如何处理,特别着急,谢谢
...全文
457
14
打赏
收藏
急急!为何Clientsocket接收的数据是乱码,服务器编码GB2312
有一程序需要向unix服务器发送查询指令并且接收应答,客户端程序使用C++builder编写,使用ClientSocket控件,服务器可以接收到客户端发送的指令,但是收到的回复却是乱码,而且已被截断,长度很短。服务器传送数据编码是GB2312。客户端使用ClientSocket的receivebuff接收指令,请问我该如何处理,特别着急,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mrpeterchen
2011-08-17
打赏
举报
回复
乱码,我也遇见过
我的原因是:用来获取SERVER SOCKET的BUFFER没有初始化为0,
导致接收过来的数据,如果长度小于BUFFER的长度,就会有乱码
建议你检查CLIENT SOCKET, 是否初始化BUFFER了
Jonix
2011-08-12
打赏
举报
回复
TCP通讯时,一般都统一用UTF8编码的。
SonicLing
2011-08-12
打赏
举报
回复
我记得好像ClientSocket->ReceivedText属性就可以直接把刚接收到的文本读出来。
CppFile
2011-08-12
打赏
举报
回复
服务器什么模式跟客户端没关系,难道你访问新浪的http服务器,还要知道他是不是阻塞么?
SonicLing
2011-08-12
打赏
举报
回复
TCP一般采用流式,服务器端是否阻塞跟客户端没关系。你得确定:
1、控件的事件是否设置好了。
2、控件的连接是否成功了。
不要病急乱投医。
jsnthy2002
2011-08-12
打赏
举报
回复
现在大概知道是怎么回事了,服务器端是阻塞模式的,我的ClientSocket中Read事件根本触发不了,所以其实根本没有接收到应答,怎么处理这种阻塞模式的接收数据,各位大侠能不能提供一个阻塞模式下的实例,非常感谢,我还从来有做过这种程序。
Jonix
2011-08-12
打赏
举报
回复
如果确定服务器发的是一串数字,那就要检查你的客户端了。
zzbinfo
2011-08-12
打赏
举报
回复
我原来做的时候也是经常的有乱码,最后这样处理就避免了,首先在ClientSocketRead事件里面妖读数据的时候先int SockeDataSize = Socket->ReceiveLength();判断收到的长度,如果定义的有控制命令的话看是不是等于命令的长度,如果等说明传的是命令,如果不等说明是数据。用 Socket->ReceiveBuf(&MyCommand,CommandSize);把数据或命令读出。你说的乱码估计是没有把数据读全造成的
int64
2011-08-12
打赏
举报
回复
可以用网络调试助手等工具,接收数据看看是什么内容,
会不会是你解析的时候出错了
CppFile
2011-08-12
打赏
举报
回复
1.unix服务器端的程序会不会有问题,是否用过别的工具测试过?或者是成熟应用?
2.用别的工具连接,是否能正确连接?返回?
3,如何知道你的发送的数据让服务器正确解析了?是否因为发送的数据不对,导致服务器返回非预期的结果?
jsnthy2002
2011-08-12
打赏
举报
回复
服务器返回的肯定是GB2312的编码格式,而且只是返回一串数字而已,我在想会不会根本不是编码造成的,一般ClientSocket接收到乱码可能是什么原因呢
ccrun.com
2011-08-12
打赏
举报
回复
用嗅控工具先查看一下服务器返回的数据,到底是什么编码的汉字。
jsnthy2002
2011-08-12
打赏
举报
回复
可以说详细点吗?服务器的发送是没有办法控制的,乱码是什么原因造成的
Delphi TCPIP通信 实例 解决中文
乱码
问题
SOCKET
SERVER-
CLIENT
敝人近期整理的客户端与服务端通信实例,
数据
编码
约定采用UTF-8
编码
,解决中文
乱码
问题.Server
Socket
组件可以同时接受一个或多个
Client
Socket
组件的连接请求,并与每个
Client
Socket
组件建立单独的连接,进行单独的...
Delphi TCPIP通信 实例 解决中文
乱码
问题
敝人近期整理的客户端与服务端通信实例,
数据
编码
约定采用UTF-8
编码
,解决中文
乱码
问题.Server
Socket
组件可以同时接受一个或多个
Client
Socket
组件的连接请求,并与每个
Client
Socket
组件建立单独的连接,进行单独的...
XE5
Client
Socket
客户端
接收
与发送信息(十六进制)
客户端连接
服务器
(我的是网关),用
Client
Socket
控件进行连接网关,信息发送(十六进制)、信息
接收
(十六进制) 说明:
Client
Socket
控件需要自己安装哟,XE5自带没有
基于tcp的聊天室
Client
UI 和
Client
Socket
之间通过信号与槽进行信息传递(
接收
:
Client
Socket
从
服务器
接收
到
数据
后,通过信号与槽传递给
Client
UI,然后
Client
UI将信息显示出来;发送:点击Send按钮后,
Client
UI将
数据
通过信号与槽...
socket
传输汉字截断为
乱码
问题的解决
这几天遇到的比较麻烦的问题,用delphi的
socket
控件传输
数据
,
服务器
端是java发送,客户端是delphi
接收
,
数据
量也比较大,其中有字符、汉字、数字,大部分情况下
接收
到的
数据
显示正常,但有时会出现
乱码
,经过观察...
网络及通讯开发
1,316
社区成员
8,873
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章