美文网首页Qt常用函数模块大全源码大全
Qt分布式网络邻居TCP数据传输案例

Qt分布式网络邻居TCP数据传输案例

作者: 新潮看世界 | 来源:发表于2019-05-09 10:34 被阅读0次

刚实现的跨平台Qt的网络邻居之TCP加网络编程中的广播实现,有需要的同学看看吧。

最原始的版本,目前正在改进的。不过够大家学习和日常使用的了。

NetworkManager.zip:

部分代码如下:

tcp数据发送和接收在压缩包里面哦。

//发送广播数据

void PeerManager::sendBroadcastData()

{

//    qDebug()<<__FUNCTION__;

    QByteArray datagram(username);

    datagram.append('@');

    datagram.append(QByteArray::number(mServerPort));

    bool validBroadcastAddress = true;

    /*foreach( QHostAddress address,broadcastAddrs )*/{

        if( broadcastSocket.writeDatagram(datagram,QHostAddress::Broadcast,broadcastPort) == -1 ){

            validBroadcastAddress = false;

        }

//        qDebug()<< __FUNCTION__ <<datagram.constData();

    }

    if(!validBroadcastAddress )

    {

        updateAddress();

    }

//读取广播数据

void PeerManager::readBroadcastData()

{

    if( !mCloseState )

        return;

    while ( broadcastSocket.hasPendingDatagrams() ){

        QHostAddress senderIp;

        quint16 senderPort;

        QByteArray datagram;

        datagram.resize(broadcastSocket.pendingDatagramSize());

        if( broadcastSocket.readDatagram(datagram.data(),datagram.size(),&senderIp,&senderPort) == -1)

        {

            continue;

        }

//        qDebug()<<__FUNCTION__<<datagram.constData();

//        qDebug()<<__FUNCTION__<<senderIp.toString();

        QList<QByteArray> list = datagram.split('@');

        if( list.size() != 2 )

        {

            continue;

        }

        int senderServerPort = list.at(1).toInt();

        if( isLocalHostAddress(senderIp))

        {

            continue;

        }

        if( !peerHash.contains(senderIp))

        {

            peerHash.insert(senderIp,senderServerPort);

        }

        else

        {

            peerHash[senderIp] = senderServerPort;

        }

        emit sigNewNeighBor(senderIp,senderServerPort);

    }

}

---------------------

作者:新潮开发

来源:CSDN

原文:https://blog.csdn.net/poolooloo/article/details/89919273

版权声明:本文为博主原创文章,转载请附上博文链接!

相关文章

  • Qt分布式网络邻居TCP数据传输案例

    刚实现的跨平台Qt的网络邻居之TCP加网络编程中的广播实现,有需要的同学看看吧。 最原始的版本,目前正在改进的。不...

  • Qt5.8 (2).Java与Qt通信之TCP图片传输

    Java-Qt-TCP数据传输 程序描述 使用Qt建立TCP Server,用Java建立TCP Client,C...

  • TCP的超时重传与拥塞控制

    TCP滑动窗口技术通过动态改变窗口大小来调节两台主机间数据传输。每个TCP/IP主机支持全双工数据传输,因此TCP...

  • 传输层

    TCP 传输层解决的问题是,数据传输的问题。数据传输分为不可靠传输和可靠数据传输,分别对应的是UDP协议和TCP协...

  • 详解TCP协议,TCB,TCP的三次握手、四次挥手

    TCP协议简介 TCP全称Transmission Control Protocol,数据传输控制协议。它是一种面...

  • HTTPS从入门到放弃

    使用socket进行tcp数据传输的简单过程 Socket是TCP/UDP传输层的API, HTTP是在tcp上的...

  • TCP协议浅析

    本文将简单介绍tcp协议的基本内容,主要包括一下四部分: tcp概述 TCP可靠数据传输 TCP流量控制 TCP连...

  • TCP协议图文秒懂

    本文将简单介绍tcp协议的基本内容,主要包括一下四部分: • tcp概述 • TCP可靠数据传输 • TCP流量控...

  • 2016年8月21日笔记

    tcp TCP/IP是不同的通信协议的大集合 TCP -传输控制协议TCP用于从应用程序到网络的数据传输控制。负责...

  • 2018-11-15

    数据传输协议 一、TCP协议 TCP协议是面向连接、可靠的数据传输协议数据从应用层发下来,会在每一层加上头部信息进...

网友评论

    本文标题:Qt分布式网络邻居TCP数据传输案例

    本文链接:https://www.haomeiwen.com/subject/qlchrqtx.html