1. QTcpServer

顾明思意,就是做Tcp服务器用的,Qt已经全部封装好了,直接调用即可

使用方法:new 一个对象,绑定地址与端口,然后通过信号与槽,处理到来的连接即可

    m_server = new QTcpServer();//监听地址和端口号m_server->listen(QHostAddress::Any, 8888);connect(m_server, &QTcpServer::newConnection, this, &myServer::handleSocket);

处理函数

void myServer::handleSocket()
{QTcpSocket* socket = m_server->nextPendingConnection();......
}
写入数据的话通过write即可

读取数据的话通过readAll

QByteArray messageByte =  socket->readAll();

2. QTcpSocket的连接是可靠的,是一对一的

QTcpSocket的连接是可靠的,是一对一的

使用方法:

1.new 一个QTcpSocket

m_Tcpsocket = new QTcpSocket();

2.连接到指定ip和端口

m_Tcpsocket->connectToHost("127.0.0.1", 8888);

3.等待连接即可

if(m_Tcpsocket->waitForConnected(3000))
{ui->textBrowser->append("已成功连接到服务器!");connect(m_Tcpsocket, &QTcpSocket::readyRead,[=](){ui->textBrowser->append(m_Tcpsocket->readAll());});connect(m_UdpSocket, &QUdpSocket::readyRead, this, &Dialog::receive);
}

3. QUcpSocket

QUcpSocket的连接是不可靠的,是一对多或者多对多的,效率很高,丢包率也高

使用方法:new 一个QUdpSocket,如果只是写数据发送的话,不读取数据的话,是不用使用bind()方法绑定地址和端口的

m_udpSocket = new QUdpSocket();
绑定端口,读取数据时需要指定端口,和地址
    m_UdpSocket->bind(5555, QUdpSocket::ShareAddress);

写入数据时,指定端口,一般采用广播方式发送给指定端口号

m_udpSocket->writeDatagram(message.toLatin1().data(), message.size(),QHostAddress::Broadcast, 5555);

读取数据时,读取的就是绑定端口号的发送来的数据,不能采取QTcpSocket读取数据的方式(readAll)读取数据,这样是读不出来的

采用如下方法:

connect(m_UdpSocket, &QUdpSocket::readyRead, this, &Dialog::receive);void Dialog::receive()
{while(m_UdpSocket->hasPendingDatagrams())    //判断udpSocket是否有数据正在等待读取{QByteArray datagram;datagram.resize(m_UdpSocket->pendingDatagramSize());//调整大小m_UdpSocket->readDatagram(datagram.data(), datagram.size());//读取第一个datagram的长度QString msg=datagram.data();ui->textBrowser->append(msg);}}

QTcpServer. QTcpSocket. QUdpSocket之间的区别相关推荐

  1. 4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(

     新建项目13IO 13IO.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets network CON ...

  2. FPGA与ASIC:它们之间的区别以及使用哪一种?

    FPGA与ASIC:它们之间的区别以及使用哪一种? FPGA Vs ASIC: Differences Between Them And Which One To Use? VL82C486 Sing ...

  3. Python 应用领域以及版本之间的区别

    Python 应用领域以及版本之间的区别 一.Python应用领域 Python+人工智能,给你更多研究方向选择! 企业级综合实战项目,集六大前沿技术为一体 二. Python 2与Python 3的 ...

  4. java中separator_java - File.separator和路径中的斜杠之间的区别

    java - File.separator和路径中的斜杠之间的区别 在Java Path-String中使用/和普通的File.separator有什么区别? 与双反斜杠相比,/平台独立似乎不是原因, ...

  5. 机器学习、数据科学、人工智能、深度学习和统计学之间的区别!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Vincent Granville,来源:机器之心 在这篇文章中, ...

  6. Python里面None True False之间的区别

    None虽然跟True False一样都是布尔值. 虽然None不表示任何数据,但却具有很重要的作用. 它和False之间的区别还是很大的! 例子: >>> t = None > ...

  7. 2.javascript之缓存 localStorage 和sessionStorage之间的区别

    2018-08-04 前言 今天做项目的时候遇到了这个问题,用户登录成功之后如何改变将登录的链接切换为用户名 解决方案:使用了sessionstorage缓存 和js的onload加载事件 用户登录成 ...

  8. java se 与j2se_关于java:J2EE和J2SE项目之间的区别

    本问题已经有最佳答案,请猛点这里访问. 我已经从github下载了一个开源项目. 这是一个基于Maven的项目. 我如何理解该项目是J2SE项目还是J2EE项目? 这两种项目在结构上有何不同? Jav ...

  9. oracle类型sql转为mysql_Oracle和MySql之间SQL区别(等效转换以及需要注意的问题)...

    >本篇博文是Oracle和MySQL之间的等效SQL转换和不同,目前市面上没有转换两种SQL的工具,小编觉得以后也不一定会有,于是在业余时间整理了一下,如果有什么错误之处请留言告知,小编也是刚 ...

  10. 腾讯面试题:char 和 varchar的最大长度是多少,以及他们之间的区别(看完你就能和面试官笑谈人生了)

    title: 腾讯面试题:char 和 varchar的最大长度是多少,以及他们之间的区别(看完你就能和面试官笑谈人生了) tags: 面试常见题 腾讯面试题:char 和 varchar的最大长度是 ...

最新文章

  1. 概率论中伯努利分布(bernoulli distribution)介绍及C++11中std::bernoulli_distribution的使用
  2. 【哈渡谱】带你玩转Hadoop之《CentOS虚拟机安装篇》
  3. Emoji表情编解码库XXL-EMOJI
  4. JSP中javaBean和Servlet理解
  5. 没错!Python杀死了Excel!
  6. php管道的概念,管道线的概念定义及分析技巧的讲解
  7. 2020年春季计算机网络考试,国家开放大学2020年春季学期电大考试《计算机网络》精选考试题及答案...
  8. php 有几种打印方法,php 5种打印方式及变量类型,
  9. opencv python 鼠标响应操作
  10. 构建postfix邮件服务器(五)extmail和extman的安装,实现web使用和管理邮件系统...
  11. html 转盘素材,jQuery指针不动转盘动的Rotate转盘插件
  12. pytorch之transforms
  13. [Web端接入经验分享] 腾讯云即时通信TIM、实时音视频TRTC
  14. 怎么python画好几朵玫瑰花_使用Python画玫瑰花
  15. redmine与svn完美集成方案
  16. 应用程序正常初始化 0xc015002 失败
  17. OOALV中字段设置ALV中下拉列表列的实现
  18. 对话姜老师,DBA的职场之路
  19. Java9中2个被废弃的使用方法
  20. android电视机软件锁,如何解锁电视的“应用锁”?OPPO智能电视R1这些操作学起来...

热门文章

  1. Struts1和Struts2对比
  2. 《球机3D定位解析及ONVIF实现》
  3. 拼音表大全图_【居家乐学】让拼音活起来
  4. wmic命令行工具介绍
  5. 计算机转换外界信息原理,高级文秘及办公自动化教程-计算机基础
  6. 英克软件结合oracle,英克科技医药行业销售管理系统
  7. Oracle查询锁表
  8. pdf加水印怎么加?五个步骤非常简单
  9. Oracle 公有云(OCI)价格与计费工具
  10. MySQL-存储过程-高效清理数据