QTcpSocket – client[通俗易懂]

QTcpSocket – client[通俗易懂]#include”mainwindow.h”#include”ui_clientWindow.h”#include<QMessageBox>#include<QDateTime>MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(newUi::clientW…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

#include "mainwindow.h"
#include "ui_clientWindow.h"

#include <QMessageBox>
#include <QDateTime>

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

    init();
    initConnect();
}

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

void MainWindow::slotReadError(QAbstractSocket::SocketError error)
{ 
   
    mTcpClient->disconnectFromHost();
    ui->mConnectButton->setText(QStringLiteral("连接"));
    mSwitch = false;
    QMessageBox msgBox;
    msgBox.setText(tr("failed to connect server because %1").arg(mTcpClient->errorString()));
    msgBox.exec();
}

void MainWindow::slotReadData()
{ 
   
    QByteArray buffer = mTcpClient->readAll();
    if(!buffer.isEmpty())
    { 
   
        ui->mReceiveEdit->append(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
        ui->mReceiveEdit->append(QString::fromUtf8(buffer));
    }
}

void MainWindow::slotConnectNetwork()
{ 
   
    if(mSwitch)
    { 
      //断开
        mTcpClient->disconnectFromHost();
        if (mTcpClient->state() == QAbstractSocket::UnconnectedState || mTcpClient->waitForDisconnected(1000))  //已断开连接则进入if{}
        { 
   
            ui->mConnectButton->setText(QStringLiteral("连接"));
            ui->mSendButton->setEnabled(false);
        }
        mSwitch = false;
    }
    else
    { 
      //连接
        mTcpClient->connectToHost(ui->mAddrEdit->text(), static_cast<quint16>(ui->mPortEdit->text().toInt()));
        if(mTcpClient->waitForConnected(1000))  // 连接成功则进入if{}
        { 
   
            ui->mConnectButton->setText(QStringLiteral("断开"));
            ui->mSendButton->setEnabled(true);
        }
        mSwitch = true;
    }
}

void MainWindow::slotSendText()
{ 
   
    QString data = ui->mSendTextEdit->toPlainText();
    if(data.simplified().size())
    { 
   
        mTcpClient->write(data.toUtf8());
    }
    ui->mSendTextEdit->clear();
}

void MainWindow::init()
{ 
   
    setWindowTitle(QStringLiteral("Client"));

    mTcpClient = new QTcpSocket(this);   //实例化tcpClient
    mTcpClient->abort();                 //取消原有连接

    ui->mSendButton->setEnabled(false);
}

void MainWindow::initConnect()
{ 
   
    connect(mTcpClient, &QTcpSocket::readyRead, this,&MainWindow::slotReadData);
    connect(mTcpClient, SIGNAL(error(QAbstractSocket::SocketError)),
            this, SLOT(slotReadError(QAbstractSocket::SocketError)));


    connect(ui->mConnectButton,&QPushButton::clicked,this,&MainWindow::slotConnectNetwork);
    connect(ui->mClearButton,&QPushButton::clicked,this,[this](){ 
   ui->mReceiveEdit->clear();});
    connect(ui->mSendButton,&QPushButton::clicked,this,&MainWindow::slotSendText);
}

在这里插入图片描述

源码链接 Client

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195503.html原文链接:https://javaforall.net

(0)
上一篇 2025年10月15日 下午11:22
下一篇 2025年10月16日 上午7:01


相关推荐

  • Java—Sort排序

    Java—Sort排序Java中Sort排序是非常常用的方法,这一章我们主要来认识一下Sort的用法和相关的实现。一、数组Sort排序升序排序,直接使用Arrays.Sort方法,例如:int[]array={10,3,6,1,4,5,9};//正序排序Arrays.sort(array);//会检查数组个数大于286且连续性好就使用归并排序,若小于47使用插入排序,其余情况使用双轴快速排序Sy…

    2022年7月12日
    23
  • 10款sublime插件推荐

    10款sublime插件推荐1. PackageControl作为安装SublimeText插件的必备利器,PackageControl是这款编辑器的标配,可以方便开发人员快速安装需要的插件。2. Git在工作中,版本控制软件最常用的软件之一,而最流行的VCS是 Git。你是否厌倦了保存文本文件,并切换回终端运行一些Git命令。如果你能从文本编辑器本身执行Git命令

    2022年6月24日
    45
  • java编译原理

    java编译原理4.Java编译原理1.javac是什么?(1)javac是一种编译器,能够将一种语言规范转换成另一种用语言规范,通常编译器是将便于人们理解的语言规范成机器容易理解的语言规范。(2)javac的任务就是将java源代码语言转换成jvm能够识别的语言,然后jvm将jvm语言再转化成当前机器能够识别的语言(这样使得对开发者屏蔽与机器相关的细节,并且使得语言的执行与平台无关)2.javac编译器的基本结…

    2022年5月9日
    39
  • JQM移动画廊[通俗易懂]

    JQM移动画廊[通俗易懂]http://www.jqmgallery.com/转载于:https://www.cnblogs.com/loalongblogs/archive/2011/08/20/2146975.html

    2022年6月9日
    39
  • c语言中concat函数,SQL注入中用到的Concat函数详解-菜鸟白帽扫盲

    c语言中concat函数,SQL注入中用到的Concat函数详解-菜鸟白帽扫盲在我们WEB安全测试的时候,会经常使用到这一语法,因此应该透彻理解这一函数,今天好好实践了一下,整理如下。1.Concat函数:concat()是一个函数,用于用于将两个字符串连接起来,形成一个单一的字符串,类似于字符串拼接;语法:SELECTCONCAT(str1,str2,…)执行结果:​2.实战演示:查看users表下的数据SELECT*FROMusers那么当一条语句为SELE…

    2022年5月22日
    103
  • Maven下载安装

    Maven下载安装

    2021年7月20日
    69

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号