首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >接收QUdpSocket无偿发送的数据

接收QUdpSocket无偿发送的数据
EN

Stack Overflow用户
提问于 2016-01-07 19:59:00
回答 1查看 398关注 0票数 1

我正在用Qt5.4(在Windows1064位上)测试一个通过udp进行的P2P通信。

在Windows to Windows上,此代码可以从另一个设备获取消息(“SendFromHost”)。但在Android到Windows上,这段代码收到了自己的已发送消息(“SendFromGuest”),并完成了程序。

请告诉我如何在没有自己发送的情况下获取消息。

代码语言:javascript
复制
void Network::start()
{
    findLanSocket = new QUdpSocket(this);
    connect(findLanSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)),
                this, SLOT(onUdpStateChanged(QAbstractSocket::SocketState)));
    findLanSocket->bind(findPort, QUdpSocket::ShareAddress);

    QByteArray datagram = "SendFromGuest";
    findLanSocket->writeDatagram(datagram.data(), datagram.size(), QHostAddress::Broadcast, findPort);
}

void Network::onUdpStateChanged(QAbstractSocket::SocketState s)
{
    if (s == QAbstractSocket::BoundState) {
        connect(findLanSocket, SIGNAL(readyRead()), this, SLOT(onReadyUdpRead()));
    }
}

void Network::onReadyUdpRead()
{
    QByteArray datagram; QHostAddress haddr;
    datagram.resize(findLanSocket->pendingDatagramSize());
    findLanSocket->readDatagram(datagram.data(), datagram.size(), &haddr);

    QString rev = QString::fromUtf8(datagram);
    if (rev == "SendFromHost"){
        result = haddr.toString();
        qDebug() << result;
        success();
        return;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2016-01-07 22:09:58

广播UDP数据报也可以由其发送方接收,这是预期的行为。例如,参见How to ignore your own broadcast udp packets

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34654593

复制
相关文章

相似问题

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