首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QUdpSocket读取问题

QUdpSocket读取问题
EN

Stack Overflow用户
提问于 2017-02-01 22:51:01
回答 1查看 732关注 0票数 0

从UDP客户端接收数据时出现问题。我使用的代码是:

代码语言:javascript
复制
MyUDP::MyUDP(QObject *parent) :
    QObject(parent)
{
    socket = new QUdpSocket(this);

    socket->bind(QHostAddress("192.168.1.10"),2000);

    connect(socket, SIGNAL(readyRead()), this, SLOT(readyRead()));

    qDebug() << "Socket establert";
}

void MyUDP::HelloUDP()
{
    QByteArray Data;
    Data.append("R");

    socket->writeDatagram(Data, QHostAddress("192.168.1.110"), 5001);

    qDebug() << "Enviat datagrama";
}

void MyUDP::readyRead()
{
    QByteArray buffer;

    buffer.resize(socket->pendingDatagramSize());

    QHostAddress sender;
    quint16 senderPort;

    socket->readDatagram(buffer.data(), buffer.size(), &sender, &senderPort);

    qDebug() << "Message from: " << sender.toString();
    qDebug() << "Message port: " << senderPort;
    qDebug() << "Message: " << buffer;

    qDebug() << "Size: " << buffer.size();
    qDebug() << "Pending datagrams: " << socket->hasPendingDatagrams();

    QString str(buffer);
    QString res = str.toAscii().toHex(); qDebug() << res;
}

问题是,在Wireshark中,我接收到以下数据(所有数据):

代码语言:javascript
复制
Internet Protocol Version 4, Src: 192.168.1.110, Dst: 192.168.1.10
User Datagram Protocol, Src Port: 5001, Dst Port: 2000
Data (20 bytes)
    Data: 58bf80000059bf800000410000000053bf800000
    [Length: 20]

但是在我的应用程序的控制台输出中,我收到了以下中继数据:

代码语言:javascript
复制
Message from:  "192.168.1.110" 
Message port:  5001 
Message:  "X¿
Size:  20 
Pending datagrams:  false 
"58bf80" 

您可以看到,只收到了数据"58bf80“的第一部分。似乎数据报没有任何限制,套接字运行良好。我看不出会发生什么。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-02 00:00:28

截断可能发生在从QByteArrayQString的转换中,字符串在空终止符(值为0的字节)中被截断。

要正确地将QByteArray转换为十六进制编码的QString,请使用toHex函数,如下例所示:

代码语言:javascript
复制
QByteArray data; //The data you got!
QString str = QString(data.toHex()); //Perform the conversion to hex encoded and to string
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41982693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档