VS2019+QT客户端服务端TCP通信

程序示例精选
VS2019+QT客户端服务端TCP通信
如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助!

前言

这篇博客针对《VS2019+QT客户端服务端TCP通信》编写代码,代码整洁,规则,易读。 学习与应用推荐首选。


运行结果


文章目录

一、所需工具软件
二、使用步骤
       1. 主要代码
       2. 运行结果
三、在线协助

一、所需工具软件

       1. VS2019
       2. QT

二、使用步骤

代码如下(示例):

#include <QFile>
#include <QFileInfo>
#include <QFileDialog>

#include<iostream>
using namespace std;

MainWindow::MainWindow(QWidget *parent)
	: QMainWindow(parent)
{

	ui.setupUi(this);


    //客户端
    socket = new QTcpSocket(this);
    //客户端

    //客户端文字发送
	QObject::connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(connectRun()));
    QObject::connect(ui.pushButton_2, SIGNAL(clicked()), this, SLOT(on_btn_push_clicked()));
    //客户端文字发送结束

}

MainWindow::~MainWindow()
{
    delete this->socket;//回收内存
}

//客户端文字发送*********************************************
void MainWindow::connectRun()
{
    if (ui.pushButton->text() == tr("连接"))
    {
        QString ip = ui.lineEdit->text();//获取ip
        int port = ui.lineEdit_2->text().toInt();//获取端口数据
        //取消已有的连接
        socket->abort();
        //连接服务器
        socket->connectToHost(ip, port);
        bool isconnect = socket->waitForConnected();//等待直到连接成功
        //如果连接成功
        if (isconnect)
        {
            ui.textEdit->append("The connection was successful!!");
            ui.pushButton->setEnabled(true);//按钮使能
            ui.pushButton->setText("断开服务器连接");  //修改按键文字
            //接收缓冲区(服务器)信息
            connect(socket, &QTcpSocket::readyRead, this, &MainWindow::ReadData);
        }
        else
        {
            ui.textEdit->append("The connection falied!!");
        }
    }
    else
    {
        std::cout << "test_ " << std::endl;
        //断开连接
        socket->disconnectFromHost();
        ui.textEdit->append("The connection closed!!");
        ui.pushButton->setText("连接");
        ui.pushButton->setEnabled(true);//关闭发送按钮使能
    }

}


//接收缓冲区信息函数
void MainWindow::ReadData()
{
    QByteArray buf = socket->readAll();
    ui.textEdit->append(buf);
}
//发送按钮事件
void MainWindow::on_btn_push_clicked()
{
    QByteArray data = ui.textEdit_2->toPlainText().toUtf8();//获取lineEdit控件中的数据并发送给服务器
    socket->write(data);
    //判断是否写入成功
    qDebug() << "test_";
    bool iswrite = socket->waitForBytesWritten();
    qDebug() << "test_";
    if (iswrite)
    {
        qDebug() << "write sucessful";
        //写入成功
    }
    else
    {
        qDebug() << "write not sucessful";
        //没有写入成功
    }
}








运行结果

三、在线协助:

如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助!

1)远程安装运行环境,代码调试
2)Visual Studio, Qt, C++, Python编程语言入门指导
3)界面美化
4)软件制作
5)云服务器申请
6)网站制作

当前文章连接:https://blog.csdn.net/alicema1111/article/details/132666851
个人博客主页https://blog.csdn.net/alicema1111?type=blog
博主所有文章点这里:https://blog.csdn.net/alicema1111?type=blog

博主推荐:
Python人脸识别考勤打卡系统:
https://blog.csdn.net/alicema1111/article/details/133434445
Python果树水果识别https://blog.csdn.net/alicema1111/article/details/130862842
Python+Yolov8+Deepsort入口人流量统计:https://blog.csdn.net/alicema1111/article/details/130454430
Python+Qt人脸识别门禁管理系统:https://blog.csdn.net/alicema1111/article/details/130353433
Python+Qt指纹录入识别考勤系统:https://blog.csdn.net/alicema1111/article/details/129338432
Python Yolov5火焰烟雾识别源码分享:https://blog.csdn.net/alicema1111/article/details/128420453
Python+Yolov8路面桥梁墙体裂缝识别:https://blog.csdn.net/alicema1111/article/details/133434445
Python+Yolov5道路障碍物识别:https://blog.csdn.net/alicema1111/article/details/129589741
Python+Yolov5跌倒检测 摔倒检测 人物目标行为 人体特征识别:https://blog.csdn.net/alicema1111/article/details/129272048

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荷塘月色2

您的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值