QT学习笔记:TCP客户端的实现

这篇具有很好参考价值的文章主要介绍了QT学习笔记:TCP客户端的实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

QT一般用来做客户端,我这里就简单讲一下怎么开发基于QT的TCP客户端。

1、用QtCreator创建项目

QT学习笔记:TCP客户端的实现,QT学习笔记,qt,学习,笔记

 

2、界面

QT学习笔记:TCP客户端的实现,QT学习笔记,qt,学习,笔记

3、.pro文件添加network

QT       += core gui network

 4、mainwindow.h


#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTcpSocket>


QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    // 构造函数中用connect绑定
    void StartConnect();
    void connectSucc();
    void ReadData();
    void disConnect();
    
    // 自动绑定
    void on_send_message_clicked();

private:
    Ui::MainWindow *ui;
    QTcpSocket *tcpsocket;
};

#endif // MAINWINDOW_H

5、mainwindow.cpp


#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    setWindowTitle("客户端");
    resize(800, 700);

    //设置默认的IP地址和端口
    ui->ip->setText("127.0.0.1");
    ui->port->setText("8899");

    tcpsocket = new QTcpSocket(this);

    //开始连接
    connect(ui->connect_bt, SIGNAL(clicked(bool)), this, SLOT(StartConnect()));

    //绑定客户端的连接信号与槽,便于在槽函数中书写逻辑
    connect(tcpsocket, SIGNAL(connected()), this, SLOT(connectSucc()));

    //当服务器端发送消息过来时,客户端接收并出来消息
    connect(tcpsocket, SIGNAL(readyRead()), this, SLOT(ReadData()));

    //断开连接时处理业务
    connect(ui->disconnect_bt, SIGNAL(clicked(bool)), this, SLOT(disConnect()));

    ui->send_message->setEnabled(false);
    ui->disconnect_bt->setEnabled(false);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::StartConnect()
{
    ui->display_message->append("开始连接服务器");

    //主动连接服务器
    tcpsocket->connectToHost(ui->ip->text().trimmed(),ui->port->text().toInt());

    if (ui->display_message->document()->blockCount() > 100){
        ui->display_message->clear();
    }
}

void MainWindow::connectSucc()
{
    if (ui->display_message->document()->blockCount() > 100){
        ui->display_message->clear();
    }
    ui->display_message->append("服务器连接成功!");
    ui->display_message->append("现在可以开始互相发送消息啦!");
    ui->connect_bt->setEnabled(false);

    ui->send_message->setEnabled(true);
    ui->disconnect_bt->setEnabled(true);
}

void MainWindow::ReadData()
{
    //获取服务器端发送过来的内容
    auto data = tcpsocket->readAll();

    if (ui->display_message->document()->blockCount() > 100){
        ui->display_message->clear();
    }
    ui->display_message->append("服务器端说:"+data);
}

void MainWindow::disConnect()
{
    tcpsocket->disconnectFromHost();
    tcpsocket->close();
    tcpsocket=NULL;

    if (ui->display_message->document()->blockCount() > 100){
        ui->display_message->clear();
    }
    ui->display_message->append("客户端与服务器端断开成功!");

    ui->connect_bt->setEnabled(true);
}

void MainWindow::on_send_message_clicked()
{
    //获取文本框的输入,开始发送消息
    QString str=ui->text_input->text().trimmed();

    if(str.isEmpty()){
        ui->statusbar->showMessage("不能发送空消息哦!");
    }else {
        tcpsocket->write(str.toUtf8().data());
        ui->display_message->append("我跟服务器端说:"+str);
    }
}

6、main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

7、执行结果

(1)界面如下

QT学习笔记:TCP客户端的实现,QT学习笔记,qt,学习,笔记

(2)连接tcp服务端

QT学习笔记:TCP客户端的实现,QT学习笔记,qt,学习,笔记

参考:

(1)Qt6教程之三(13) TCP/IP通讯与socket编程文章来源地址https://www.toymoban.com/news/detail-529073.html

到了这里,关于QT学习笔记:TCP客户端的实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT TCP客户端实现

    QTcpSocket实例首先是通过connectToHost()尝试连接到服务器,需要指定服务器的IP地址和端口。connectToHost()是异步方式连接服务器,不会阻塞程序运行,连接后发射connected()信号。 如果需要使用阻塞方式连接服务器,则使用waitForConnected()函数阻塞程序运行,直到连接成功或失败。

    2024年02月09日
    浏览(47)
  • 【Qt专栏】Qt实现TCP服务端和客户端通信

    网络通信是程序员必须会的一项生存技能,这里简单的实现了服务端和客户端通信的两个小示例,代码可以直接拿来用,开发环境是Qt5.9.6。 1.项目架构 2.tcpserver.h文件 3.tcpserver.cpp文件 4.测试效果 1.项目架构 2.tcpserver.h文件 3.tcpserver.cpp文件 4.测试效果 好了,两个小程序写完并

    2024年02月12日
    浏览(36)
  • QT实现tcp服务器客户端

    2024年02月07日
    浏览(54)
  • QT学习TCP/IP通信(一个服务端对多个客户端)

    QT学习TCP/IP通信(一个服务端对多个客户端) 一、服务端: 1.创建QTcpServer对象 2.启动服务器(监听)调用成员方法listen(QHostAddress::Any,端口号) 3.定义一个QLis容器对象存储客户信息; 4.当有客户端链接时候会发送newConnection信号,触发槽函数接受链接(得到一个与客户端通信的

    2024年02月11日
    浏览(45)
  • QT实现TCP通信(服务器与客户端搭建)

    创建一个QTcpServer类对象,该类对象就是一个服务器 调用listen函数将该对象设置为被动监听状态,监听时,可以监听指定的ip地址,也可以监听所有主机地址,可以通过指定端口号,也可以让服务器自动选择 当有客户端发来连接请求时,该服务器会自动发射一个newConnection信号

    2024年02月09日
    浏览(54)
  • 流媒体服务器SRS的搭建及QT下RTMP推流客户端的编写

        目前市面上有很多开源的流媒体服务器解决方案,常见的有SRS、EasyDarwin、ZLMediaKit和Monibuca。这几种的对比如下: (本图来源:https://www.ngui.cc/zz/1781086.html?action=onClick)     SRS(Simple Real-time Server)是一个开源的流媒体服务器,它支持RTMP、HLS、HTTP-FLV等多种流媒体协议

    2024年02月11日
    浏览(46)
  • Qt 服务器 获取发送客户端的QTcpSocket对象 和 该socket的ip和端口号

    遇到问题:         众多客户端发送过来请求数据,如何找到该客户端的 QTcpsocket对象给该对象回复消息? 解决办法:         QTcpSocket *ptr =   dynamic_castQTcpSocket *(sender());         解释:通过 dynamic_cast强行转换。QTcpSocket *类型的对象、谁发送了信号就会触发      

    2024年02月12日
    浏览(42)
  • TCP/IP网络编程(1)——基于TCP的服务端和客户端的简单实现

    目录 前言 一、服务器端函数 1. 创建套接字函数 socket 2. 套接字绑定地址函数 bind 3. 等待连接请求函数 listen 4. 处理连接请求函数 accept 5. 关闭套接字函数 close 二、客户端函数 1. 请求连接函数 connect 三、完整代码 四、 基于TCP的半关闭 shutdown 五、 套接字可选项 getsockopt setsoc

    2024年02月07日
    浏览(54)
  • Qt 服务器/客户端TCP通讯

    最近需要用到TCP/IP通讯,这边就先找个简单的例程学习一下。Qt的TCP通讯编程可以使用QtNetwork模块,QtNetwork模块提供的类能够创建基于TCP/IP的客户端与服务端应用程序,一般会使用QTcpSocket、QTcpServer类 网络通信方式主要有两种:TCP与UDP。以下拷贝网络上总结两者之间的区别:

    2023年04月26日
    浏览(67)
  • QT-使用QTcpSocket建立TCP客户端连接

    使用QT的QTcpSocket建立TCP客户端方式,十分的简单,上手也快,代码量不多,并且还自动支持重连接机制,也就是说如果你的服务端突然死机了,然后服务端又重启,那么我们的客户端这个时候是会自动去再连接的,不需要你的程序再做重连接的机制,所以我们应用起来是十分

    2024年02月14日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包