• 7518阅读
  • 2回复

[提问]请教QTcpsocket接收数据显示乱码的问题[已解决] [复制链接]

上一主题 下一主题
离线darrenmu
 

只看楼主 正序阅读 楼主  发表于: 2010-07-01
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
    不知道为何必须是QString,char *的话 收到的就不正确?

  客户端发送:
    QByteArray block;
    QDataStream out(&block, QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_4_6);
    out << QString("1111");
    tcpSocket->write(block);

  服务器接收
    QDataStream in(socket);                            
    in.setVersion(QDataStream::Qt_4_6);
    QString str;
    in >> str;
    qDebug() << str;

在客户端发送数据时,字符串必须是QString ,服务器才可以正确打印出来,否则收到的是长度为0的空串。但我想在终端用telnet连接服务器,此时输入任何字符串都无法正确接收。。。。请问如何改server ,能接收非QString字符串?

谢谢!!!
[ 此帖被darrenmu在2010-07-02 15:25重新编辑 ]
离线darrenmu

只看该作者 2楼 发表于: 2010-07-01
我这样写可以正确的接收终端telnet 发送过来的char *格式的数据。如果发送方要发char *的话就不能用STream了吧,得用write(buf,len);这种方法。。呵呵,多谢了解决了。
char buf[32];
int n = socket->read(buf, 32);
buf[n] = '\0';
qDebug() << "len = " << strlen(buf)  << buf;

[ 此帖被darrenmu在2010-07-01 16:34重新编辑 ]
离线dbzhang800

只看该作者 1楼 发表于: 2010-07-01
看 manual,先搞清楚

    QDataStream out(&block, QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_4_6);
    out << tr("1111");


out <<QString("1111");

out <<"1111";
区别

http://doc.qt.nokia.com/4.6/datastreamformat.html
快速回复
限100 字节
 
上一个 下一个