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

qt中tcpsocket TCP通信接收信息有关问题求解决

2013-01-04 
qt中tcpsocket TCP通信接收信息问题求解决while(tcpSocket-bytesAvailable()0){QByteArray datagramqDe

qt中tcpsocket TCP通信接收信息问题求解决
while(tcpSocket->bytesAvailable()>0)
    {
        QByteArray datagram;
        qDebug()<<"enter in smarthomeserver and receive data!";
        datagram.resize(tcpSocket->bytesAvailable());
        tcpSocket->read(datagram.data(),datagram.size());
        QString msg=datagram.data();
        qDebug()<<msg;
        QByteArray  received=datagram.left(datagram.size());
        if(received.size()==4)
        {
         
            qdebug()<<"do something";
        }
    }
这是我接收端的代码,用tcpsocket套接字链接的槽函数,我接收端想收一个“8810”字符串,请问我代码如何改动,如果我接收的是变长的字符串。又该如何。请高手帮我解决一下,如果能贴上些许代码那就再好不过了,就在我这个代码上改动qt中tcpsocket TCP通信接收信息有关问题求解决
[解决办法]
QString msg=datagram.data();这句改成
QString msg=datagram.toString();或许就可以了。
[解决办法]
发送和接收变长数据无非有以下两种办法:
1. 发送者在数据的开头增加两个或四个字节,用来说明后面数据的长度。接收者必须接收至少两个或四个字节,用来作为接收完成的依据。
2. 发送者在数据的尾部增加一个约定好的标志,当接收者遇到这个标志时,表示接收完成。这种方法适合字符串传输。比如用\n表示字符串末尾。

热点排行