网络编程

目录

1. 网络相关概念

2. Qt网络编程简介

3. 相关函数


1. 网络相关概念

1. TCP与UDP的区别?

【TCP】

TCP(Transmission Control Protocol,即传输控制协议):是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)。

适用场景:

适合于对传输质量要求较高的通信

在需要可靠数据传输的场合,通常使用TCP协议

MSN/QQ等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议

【UDP】

UDP(User Datagram Protocol,即用户数据报协议),是不可靠的无连接的协议。在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。

适用场景:

发送小尺寸数据(如对DNS服务器进行IP地址查询时)

适合于广播/组播式通信中。

MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议

2. 什么是IP地址?

●IP地址是Internet中主机的标识

●Internet中的主机要与别的机器通信必须具有一个IP地址

●IP地址为32位(IPv4)或者128位(IPv6)

●表示形式:常用点分十进制,如202.38.64.10,最后都会转换为一个32位的无符号整数。

3. 什么是端口号?

端口号

  • 为了区分一台主机接收到的数据包应该转交给哪个进程来进行处理,使用端口号来区
  • TCP端口号与UDP端口号独立
  • 端口号一般由IANA (Internet Assigned Numbers Authority) 管理
  • 端口用两个字节来表示:0~65535
  • 推荐范围5000-10000,但是避免使用连号,例如:6666、8888等

2. Qt网络编程简介

Qt主要在嵌入式中作为上位机进行编程,上位机的功能主要是发送控制命令和接收传感器数据,因此主要使用TCP进行通信,本次网络编程以TCP为例。

在Qt中使用网络相关类之前,需要在.pro项目配置文件中,增加network模块。

常用类有:

  • QTcpServer

此类用于建立和管理一个基于TCP的服务器,此类直接继承自QObject,并不继承QIODevice,因此QTcpServer类不具备IO功能。

  • QTcpSocket

此类表示一个基于TCP的连接,间接继承QIODevice,因此使用此类作为IO的功能。

3. 相关函数

相关函数如下:

  • QTcpServer::QTcpServer(QObject * parent = 0)

构造函数

  • bool QTcpServer::listen(const QHostAddress & address = QHostAddress::Any, quint16 port = 0)

开启监听服务

参数1:向哪个IP地址开放,QHostAddress是一个IP地址的封装类,默认值表示向任何IP开放。

参数2:在哪个端口号运行监听服务,默认值为随机。

返回值:开启成功或失败

  • bool QTcpServer::isListening() const

是否正在监听

  • QTcpSocket::QTcpSocket(QObject * parent = 0)

构造函数

客户端连接到主机。

参数1:服务器名称,通常为IP地址

参数2:服务器的端口号

参数3:打开模式,默认为读写模式

  • void QTcpServer::newConnection() [signal]

服务器每当检测到客户端发起有效连接后发射的信号。

  • QTcpSocket * QTcpServer::nextPendingConnection() [virtual]

从服务器对象中获得一个与某个客户端通信的QTcpSocket对象。

  • QHostAddress QAbstractSocket::peerAddress() const

获取对方的IP地址。

  • quint16 QAbstractSocket::peerPort() const

获取对方的端口号

  • void QAbstractSocket::connected() [signal]
  • void QAbstractSocket::disconnected() [signal]

连接与断连的信号。

  • QTextStream::QTextStream(QIODevice * device)

创建一个用于读写文本的流对象

  • QTextStream & QTextStream::operator<<(const QString & string)

输出一个QString的字符串信息

  • void QIODevice::readyRead() [signal]

有新数据可读时发射的信号

  • QString QTextStream::readAll()

读取所有文本数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值