读书人

qt中tcpsocket TCP通信接收信息有关问

发布时间: 2013-01-04 10:04:16 作者: rapoo

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表示字符串末尾。

读书人网 >QT开发

热点推荐