当前位置: 首页> 科技> 互联网 > 最靠谱的装修平台_土巴兔装修口碑怎样_seo搜索引擎优化课程总结_seo是网络优化吗

最靠谱的装修平台_土巴兔装修口碑怎样_seo搜索引擎优化课程总结_seo是网络优化吗

时间:2025/7/12 2:01:38来源:https://blog.csdn.net/qq_62435866/article/details/146152419 浏览次数:0次
最靠谱的装修平台_土巴兔装修口碑怎样_seo搜索引擎优化课程总结_seo是网络优化吗

Tcp通信

  • 1、前言
  • 2 、客户端
    • 2.1创建客户端ui界面
    • 2.2在.pro文件中添加network
    • 2.3定义一个通信对象并创建socket对象
    • 2.4socket连接成功,会发出信号
    • 2.5socket连接失败,发出信号
    • 2.6创建取消按钮的信号与槽
    • 2.7创建连接按钮的信号与槽
    • 2.8 .h文件和.cpp文件
      • 2.8.1 .h文件
      • 2.8.2 .cpp文件
  • 3、服务器
    • 3.1创建服务器ui界面
    • 3.2在.pro文件中添加network
    • 3.3定义一个服务器对象并创建server对象
    • 3.4监听连接对象
    • 3.5客户端发起连接时,server会发出信号
    • 3.6创建处理有新客户端连接时的槽函数
    • 3.7 .h文件和.cpp文件
      • 3.7.1 .h文件
      • 3.7.2 .cpp文件
  • 4、总结

1、前言

前言:记录一下自己对于Qt中Tcp的学习,方便别人参考,也可以巩固自己的学习或者让

自己日后回顾。

2 、客户端

2.1创建客户端ui界面

在这里插入图片描述

2.2在.pro文件中添加network

先在.pro文件中添加network

在这里插入图片描述

2.3定义一个通信对象并创建socket对象

private:Ui::Widget *ui;QTcpSocket *socket;    //定义一个网络通信对象
 socket = new QTcpSocket(this);  //创建socket对象

2.4socket连接成功,会发出信号

    //连接服务器成功,socket会发出一个信号connect(socket, &QTcpSocket::connected,this,[=](){QMessageBox::information(this,"连接提示","连接服务器成功");});

2.5socket连接失败,发出信号

    //连接断开connect(socket, &QTcpSocket::disconnected,this,[=](){QMessageBox::warning(this,"连接提示","连接异常");});

2.6创建取消按钮的信号与槽

在这里插入图片描述

//取消按钮
void Widget::on_canclePushButton_clicked()
{this->close();      //关闭窗口
}

2.7创建连接按钮的信号与槽

与上面类似
//连接按钮
void Widget::on_connectPushButton_clicked()
{//1.获取ip地址和端口号QString ip = ui->ipLineEdit->text();QString port = ui->potrLineEdit->text();qDebug() << ip;qDebug() << port;//连接服务器socket->connectToHost(QHostAddress(ip),port.toShort());}

2.8 .h文件和.cpp文件

2.8.1 .h文件

.h文件

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTcpSocket>
#include <QHostAddress>
#include <QMessageBox>
#include <QDebug>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_canclePushButton_clicked();         //取消按钮void on_connectPushButton_clicked();        //连接按钮private:Ui::Widget *ui;QTcpSocket *socket;    //定义一个网络通信对象
};
#endif // WIDGET_H

2.8.2 .cpp文件

.cpp文件

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);socket = new QTcpSocket(this);  //创建socket对象//连接服务器成功,socket会发出一个信号connect(socket, &QTcpSocket::connected,this,[=](){QMessageBox::information(this,"连接提示","连接服务器成功");});//连接断开connect(socket, &QTcpSocket::disconnected,this,[=](){QMessageBox::warning(this,"连接提示","连接异常");});}Widget::~Widget()
{delete ui;
}//取消按钮
void Widget::on_canclePushButton_clicked()
{this->close();      //关闭窗口
}//连接按钮
void Widget::on_connectPushButton_clicked()
{//1.获取ip地址和端口号QString ip = ui->ipLineEdit->text();QString port = ui->potrLineEdit->text();qDebug() << ip;qDebug() << port;//连接服务器socket->connectToHost(QHostAddress(ip),port.toShort());}

3、服务器

3.1创建服务器ui界面

在这里插入图片描述

3.2在.pro文件中添加network

在这里插入图片描述

3.3定义一个服务器对象并创建server对象

private:Ui::Widget *ui;QTcpServer *server;       //定义服务器
server = new QTcpServer(this);      //创建服务器对象

3.4监听连接对象

server->listen(QHostAddress::AnyIPv4,port);         //监听来自任何IPv4地址的连接请求

3.5客户端发起连接时,server会发出信号

//客户端发起连接,server发出信号
connect(server,&QTcpServer::newConnection,this, &Widget::newClientHandler);

3.6创建处理有新客户端连接时的槽函数

private slots:void newClientHandler();          //处理新客户端连接
//处理新客户端连接
void Widget::newClientHandler()
{//建立Tcp连接QTcpSocket *socket = server->nextPendingConnection();//    socket->peerAddress();      //获取客户端地址
//    socket->peerPort();         //获取客户端端口号ui->ipLineEdit->setText(socket->peerAddress().toString());              //显示地址ui->portLineEdit->setText(QString::number(socket->peerPort()));         //显示端口号
}

3.7 .h文件和.cpp文件

3.7.1 .h文件

.h文件

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTcpServer>
#include <QTcpSocket>#define port 8000QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void newClientHandler();          //处理新客户端连接private:Ui::Widget *ui;QTcpServer *server;       //定义服务器
};
#endif // WIDGET_H

3.7.2 .cpp文件

.cpp文件

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);server = new QTcpServer(this);      //创建服务器对象server->listen(QHostAddress::AnyIPv4,port);         //监听来自任何IPv4地址的连接请求//客户端发起连接,server发出信号connect(server,&QTcpServer::newConnection,this, &Widget::newClientHandler);
}Widget::~Widget()
{delete ui;
}//处理新客户端连接
void Widget::newClientHandler()
{//建立Tcp连接QTcpSocket *socket = server->nextPendingConnection();//    socket->peerAddress();      //获取客户端地址
//    socket->peerPort();         //获取客户端端口号ui->ipLineEdit->setText(socket->peerAddress().toString());              //显示地址ui->portLineEdit->setText(QString::number(socket->peerPort()));         //显示端口号
}

4、总结

总结:以上就是Qt的Tcp通信的整个过程了,浏览过程中,如若发现错误,欢迎大家指正,

有问题的可以评论区留言或者私信。 最后,如果大家觉得有所帮助的话,可以点个赞,

谢谢大家!永远相信美好的事情即将发生!
Qt的Tcp通信完成!
关键字:最靠谱的装修平台_土巴兔装修口碑怎样_seo搜索引擎优化课程总结_seo是网络优化吗

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: