首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

socke发送接收数据时,字符串格式转化?解决办法

2012-05-29 
socke发送接收数据时,字符串格式转化?我想通过QTcpSocket发送数据:客户端:QString message 你好,服务器

socke发送接收数据时,字符串格式转化?
我想通过QTcpSocket发送数据:
客户端:
QString message = "你好,服务器!";
tcpSocket->write(message.toLatin1(), message.length());

服务端:
while(tcpSocket->bytesAvailable()>0)
{
  int len = tcpSocket->bytesAvailable();
  QByteArray char = tcpSocket->read(len);
}

因为我传送的数据为中文,在接收的时候,就会变成乱码的形式,这个问题该如何解决呢?

小弟想法:在客户端传递的时候,就以QByteArray的形式传递,即:tcpSocket->write(message.toAscii(), message.length());这样的话,可以解决中文的形式,但是会出现另外一个问题,就是:接收的字符变短了两个字节
eg:我发送message = "abc哈哈ef";接收的时候就变成了"abc哈哈e"。。。

请问大家有么有好的方法处理呢。。。

[解决办法]
你数据还没有收完,它当然不全了。不要假设你能在一次readyRead中接收到所有数据,应该使用协议来确保数据的完整性。

http://topic.csdn.net/u/20120515/18/3d48b612-fa6b-4604-a3cd-e1a161b2a598.html
这个帖子可能对你有帮助。

热点排行