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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • COM笔记-QueryInterface函数

    COM笔记-QueryInterface函数客户同组件的交互都是通过一个接口完成的。在客户查询组件的其他接口时,也是通过接口完成的。这个接口就是IUnknown。它在UNKNWN.H头文件定义:如下      InterfaceIUnknown      {           virtualH

  • 入侵mysql数据库_SQL注入漏洞

    入侵mysql数据库_SQL注入漏洞系统症状:某个功能报错:但是数据库链接并没有用完。重启一下tomcat就好了,但是过十几分钟又报错,如此反复。怀疑是数据库连接泄露。于是加入下面的配置进行调查:……查到报错信息:[ERROR]com.alibaba.druid.pool.DruidDataSource.removeAbandoned(DruidDataSource.java:2664):Druid-ConnectionP…

  • 代码主题darcula_如何在带有Darcula主题的黑暗模式下使用NetBeans「建议收藏」

    代码主题darcula_如何在带有Darcula主题的黑暗模式下使用NetBeans「建议收藏」本文概述默认情况下,NetBeans仅为代码编辑器提供一个深色高亮主题,没有什么令人愉快的”城市之光”:如你所见,它仍然使用NetBeans的默认light主题,简直太可怕了。在本文中,我们将向你展示如何为NetBeans安装和使用最佳的深色主题之一,类似于PHPStorm的深色主题。1.下载DarculaLAF(Look&Feel)对于NetBeans,最好的深色主题是Dar…

  • rabbitmq 和 kafka使用场景[通俗易懂]

    rabbitmq 和 kafka使用场景[通俗易懂] rabbitMQ     1.RabbitMQ的消息应当尽可能的小,并且只用来处理实时且要高可靠性的消息。2.消费者和生产者的能力尽量对等,否则消息堆积会严重影响RabbitMQ的性能。3.集群部署,使用热备,保证消息的可靠性。 kafka1.应当有一个非常好的运维监控系统,不单单要监控Kafka本身,还要监控Zookeeper。(kafka强烈的依赖于zookeepe…

    2022年10月14日
  • springboot实现热部署

    springboot实现热部署文章目录前言原理方式开始配置在pom.xml中添加依赖devtools的配置IDEA中配置测试参考资料&小结小结参考资料前言在实际开发过程中,每次修改代码就得将项目重启,重新部署,对于一些大型应用来说,重启时间需要花费大量的时间成本。对于一个后端开发者来说,重启过程确实很难受啊。在Java开发领域,热部署一直是一个难以解决的问题,目前的Java虚拟机只能实现方法体的修改热部署,…

  • springapplicationevent_Spring bean

    springapplicationevent_Spring bean相信使用过SpringBoot的开发人员,都对SpringBoot的核心模块中提供的SpringApplication类不陌生。SpringApplication类的run()方法往往在Spring应用的入口类中被调用,以启动Spring应用。1.Spring应用的入口类与SpringApplication类1)Spring应用的入口类Spring应用的入口类是Spring应用的配置起点,是配置Spring上下文的起点,往往使用了@SpringBootApplication或@EnableA

发表回复

您的电子邮箱地址不会被公开。

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