当前位置: 首页 > news >正文

免费外贸网站模板珠海北京网站建设

免费外贸网站模板,珠海北京网站建设,网站建设与运营实践考试,公众号网页版客户端和服务器端建立通信过程 使用Qt提供的类进行基于TCP的套接字通信需要用到两个类: QTcpServer:服务器类,用于监听客户端连接以及和客户端建立连接。 QTcpSocket:通信的套接字类,客户端、服务器端都需要使用。服务…

客户端和服务器端建立通信过程

在这里插入图片描述

使用Qt提供的类进行基于TCP的套接字通信需要用到两个类:

QTcpServer:服务器类,用于监听客户端连接以及和客户端建立连接。
QTcpSocket:通信的套接字类,客户端、服务器端都需要使用。

服务器端QTcpServer

QTcpServer类用于监听客户端连接以及和客户端建立连接,在使用之前先介绍一下这个类提供的一些常用API函数:

公共成员函数

构造函数

QTcpServer::QTcpServer(QObject *parent = nullptr)

给监听的套接字设置监听listen()函数

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

在代码中通过启动监听按钮设置监听

//启动监听服务
void MainWindow::on_setListen_released()
{unsigned short port =ui->port->text().toUShort();m_server->listen(QHostAddress::Any,port);ui->setListen->setDisabled(true);//}

参数:

  • address:通过类QHostAddress可以封装IPv4IPv6格式的IP地址,QHostAddress::Any表示自动绑定。
  • port:如果指定为0表示随机绑定一个可用端口。 返回值:绑定成功返回true,失败返回false

判断当前对象是否在监听, 是返回true,没有监听返回false

bool QTcpServer::isListening() const;

如果当前对象正在监听,返回监听的服务器地址信息, 否则返回 QHostAddress::Null

QHostAddress QTcpServer::serverAddress() const;

如果服务器正在侦听连接,则返回服务器的端口; 否则返回0

quint16 QTcpServer::serverPort() const

服务器端QTcpSocket

QTcpSocket是一个套接字通信类,不管是客户端还是服务器端都需要使用。在Qt中发送和接收数据也属于IO操作(网络IO),先来看一下这个类的继承关系:




在这里插入图片描述

得到和客户端建立连接之后用于通信的QTcpSocket套接字对象,它是QTcpServer的一个子对象,当QTcpServer对象析构的时候会自动析构这个子对象,当然也可自己手动析构,建议用完之后自己手动析构这个通信的QTcpSocket对象。

QTcpSocket *QTcpServer::nextPendingConnection();

阻塞等待客户端发起的连接请求,不推荐在单线程程序中使用waitForNewConnection(),建议使用非阻塞方式处理新连接,即使用信号 newConnection()

bool QTcpServer::waitForNewConnection(int msec = 0, bool *timedOut = Q_NULLPTR);

参数:

  1. msec:指定阻塞的最大时长,单位为毫秒(ms);
  2. timeout:传出参数,如果操作超时timeouttrue,没有超时timeoutfalse

套接字通信的过程中的信号

1.在使用QTcpSocket进行套接字通信的过程中,如果该类对象发射出readyRead()信号,说明对端发送的数据达到了,之后就可以调用 readAll ()函数接收数据了。

[signal] void QIODevice::readyRead();

官方解释

This signal is emitted once every time new data is available for reading from the device's current read channel. It will only be emitted again once new data is available, such as when a new payload of network data has arrived on your network socket, or when a new block of data has been appended to your device

2.调用connectToHost()函数并成功建立连接之后发出connected()信号。

[signal] void QAbstractSocket::connected();

3.在套接字断开连接时发出disconnected()信号。

[signal] void QAbstractSocket::disconnected();

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

接收数据

// 指定可接收的最大字节数 maxSize 的数据到指针 data 指向的内存中
qint64 QIODevice::read(char *data, qint64 maxSize);
// 指定可接收的最大字节数 maxSize,返回接收的字符串
QByteArray QIODevice::read(qint64 maxSize);
// 将当前可用操作数据全部读出,通过返回值返回读出的字符串
QByteArray QIODevice::readAll();

发送数据

// 发送指针 data 指向的内存中的 maxSize 个字节的数据
qint64 QIODevice::write(const char *data, qint64 maxSize);
// 发送指针 data 指向的内存中的数据,字符串以 \0 作为结束标记
qint64 QIODevice::write(const char *data);
// 发送参数指定的字符串
qint64 QIODevice::write(const QByteArray &byteArray);
http://www.yayakq.cn/news/358498/

相关文章:

  • visual studio 2010 网站开发深圳积分商城网站设计
  • 北京电商网站开发公司同服务器网站查询工具
  • 邯郸单位网站建设建设网站要钱么
  • 江苏建设局网站设计公司取名大全最新版的
  • 外国网站英语要求超市建网站
  • 社交网站开发公司如何网络推广自己的产品
  • 跳转到手机网站代码北海做网站有哪家
  • 响应式网站多少钱 开发国内企业邮箱
  • 甘肃网站域名申请公司哪里有给网站做
  • 计算机网站建设 是什么培训网页
  • 免费招聘网站建设wordpress 站内资讯
  • 来宾 网站建设福建住房和城乡建设局网站
  • 相亲网站建设开州快速建网站
  • 网络规划设计师教程第2版pdf百度优化设计六年级上册数学答案
  • 毕业设计网站只做前端行不行佛山手机网站建设优化
  • 昆明市住房和城乡建设局官方网站hao123网址导航官网
  • 深圳网站建设加盟怎么注册公司要多少钱
  • 网站建设职业wordpress slider 插件
  • 做货源的网站电子商务网站建设与维护总结
  • 甘肃省集约化网站建设app模板制作软件
  • 西安网站建设xamokj商务网站规划与网页制作
  • 长沙网站排名WordPress上传ssl证书
  • 深圳网站建设软件开发公司排名公司网络组建方案
  • 杂志媒体网站建设方案深圳网站建设哪家公司好
  • 用dw如何做网站首页如何做好网站建设前期网站规划
  • 陕西做网站找谁上海工商网查询官网
  • 闽侯县住房和城乡建设局网站优站点网址收录网
  • 国际贸易网站建设百度大数据官网入口
  • 免费门户网站搭建网站建设功能定位怎么写
  • 如何拥有自己的网站域名wordpress模板调用文件夹下