(十五)qt-tcp
基本流程


QT += core gui network
#include "tcp.h"
#include "ui_tcp.h"
#include <QDebug> Tcp::Tcp(QWidget *parent) :
QWidget(parent),
ui(new Ui::Tcp)
{
ui->setupUi(this);
// ui init
ui->ip_edit->setText("127.0.0.1");
ui->port_edit->setText("");
// 实例化
server = new QTcpServer(this);
// 监听
server->listen(QHostAddress("127.0.0.1"),);
// 新的链接
connect(server, &QTcpServer::newConnection, this, [=](){
// 接收客户端套接字对象
// sock_addr 结构体 == 类 QTcpSocket
conn = server->nextPendingConnection();
ui->log_text->append("有新的链接");
// 接收数据
connect(conn,&QTcpSocket::readyRead, this, [=](){
QByteArray array = conn->readAll();
ui->log_text->append(array);
}); });
connect(ui->send, &QPushButton::clicked, this, [=](){
// 发送数据 QTextEdit
conn->write(ui->input_text->toPlainText().toUtf8());
ui->log_text->append("Me Say: " + ui->input_text->toPlainText());
ui->input_text->clear();
}); } Tcp::~Tcp()
{
delete ui;
}
server.cpp
#ifndef TCP_H
#define TCP_H #include <QWidget>
#include <QTcpSocket>
#include <QTcpServer> namespace Ui {
class Tcp;
} class Tcp : public QWidget
{
Q_OBJECT public:
explicit Tcp(QWidget *parent = nullptr);
~Tcp(); private:
Ui::Tcp *ui; QTcpServer *server;
QTcpSocket *conn;
}; #endif // TCP_H
server.h
#include "client.h"
#include "ui_client.h" Client::Client(QWidget *parent) :
QWidget(parent),
ui(new Ui::Client)
{
ui->setupUi(this);
// ui init
ui->cip_edit->setText("127.0.0.1");
ui->cport_edit->setText("");
// 实例化
client = new QTcpSocket(this);
// 链接服务器
client->connectToHost(QHostAddress("127.0.0.1"),); // 接收数据
connect(client, &QTcpSocket::readyRead, this, [=](){
QByteArray array = client->readAll();
ui->clog_text->append(array);
}); connect(ui->csend, &QPushButton::clicked, this, [=](){
client->write(ui->cinput_text->toPlainText().toUtf8());
ui->clog_text->append("Me Say: " + ui->cinput_text->toPlainText().toUtf8());
ui->cinput_text->clear();
}); } Client::~Client()
{
delete ui;
}
client.cpp
#ifndef CLIENT_H
#define CLIENT_H #include <QWidget>
#include <QTcpServer>
#include <QTcpSocket> namespace Ui {
class Client;
} class Client : public QWidget
{
Q_OBJECT public:
explicit Client(QWidget *parent = nullptr);
~Client(); private:
Ui::Client *ui; QTcpSocket* client;
}; #endif // CLIENT_H
client.h

(十五)qt-tcp的更多相关文章
- centos Linux系统日常管理2 tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课
centos Linux系统日常管理2 tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课 ...
- 我的MYSQL学习心得(十五) 日志
我的MYSQL学习心得(十五) 日志 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- 别人的的MYSQL学习心得(十五) 日志
我的MYSQL学习心得(十五) 日志 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- VMware vSphere服务器虚拟化实验十五 vCenter vShield Manager
VMware vSphere服务器虚拟化实验十五 vCenter vShield Manager VMware vShield Manager是专为 VMware vCenter Server 集成 ...
- JAVA之旅(三十五)——完结篇,终于把JAVA写完了,真感概呐!
JAVA之旅(三十五)--完结篇,终于把JAVA写完了,真感概呐! 这篇博文只是用来水经验的,写这个系列是因为我自己的java本身也不是特别好,所以重温了一下,但是手比较痒于是就写出了这三十多篇博客了 ...
- 《linux就该这么学》第十五节课:第14,15章,dhcp服务和邮件系统
(借鉴请改动) 13章收尾 13.6.分离解析技术 1.在主配置文件中改两个any 2.编辑区域配置文件,写入acl,使用match匹配 ...
- centos lamp/lnmp阶段复习 以后搬迁discuz论坛不需要重新安装,只需修改配置文件即可 安装wordpress 安装phpmyadmin 定时备份mysql两种方法 第二十五节课
centos lamp/lnmp阶段复习 以后搬迁discuz论坛不需要重新安装,只需修改配置文件即可 安装wordpress 安装phpmyadmin 定时备份mysql两种方法 第二十五节 ...
- CCNP路由实验之十五 NAT(网络地址转换)
CCNP路由实验之十五 NAT(网络地址转换) 众所周知,要让自己的电脑连上Internet,必须要到运营商(ISP)申请一个上网账号,依据此账号申请自己的宽频业务(拨号上网.商业固定IP等等) ...
- OpenCV开发笔记(六十五):红胖子8分钟带你深入了解ORB特征点(图文并茂+浅显易懂+程序源码)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- Bootstrap <基础二十五>警告(Alerts)
警告(Alerts)以及 Bootstrap 所提供的用于警告的 class.警告(Alerts)向用户提供了一种定义消息样式的方式.它们为典型的用户操作提供了上下文信息反馈. 您可以为警告框添加一个 ...
随机推荐
- nginx 启动错误
场景 在Windows下 启动nginx报错: nginx: [error] ReadFile() : Incorrect function) 解决 因为 nginx.conf 中存在 /* 被认为是 ...
- jsp内置对象-page对象
page对象代表jsp本身,只有在jsp页面才有效.page对象本质上是被转换后的Servlet,因此它可以调用任何被Servlet类所定义的方法. 项目ch05案例:创建HttpJSPPage类的对 ...
- Proverbs(谚语)
Proverbs(谚语) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 更多请查看:English 1. Every man is the maste ...
- Linux云计算运维-MySQL
0.建初心 优秀DBA的素质 1.人品,不做某些事情2.严谨,运行命令前深思熟虑,三思而后行,即使是依据select3.细心,严格按照步骤一步一步执行,减少出错4.心态,遇到灾难,首先要稳住,不慌张, ...
- Python 爬虫 之 阅读呼叫转移(一)
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/jcjc918/article/details/37533073 你是否苦恼于网上无法下载的& ...
- Springboot + Atomikos + Druid + Mysql 实现JTA分布式事务
DataSource 配置 package com.cheng.dynamic.config; import java.util.Properties; import javax.sql.DataSo ...
- 【原创】那些年用过的Redis集群架构(含面试解析)
引言 今天是2019年2月12号,也就是大年初八,我接到了高中同学刘有码面试失利的消息. 他面试的时候,身份是某知名公司的小码农一枚,却因为不懂自己生产上Redis是如何部署的,导致面试失败! 人间惨 ...
- 【故障公告】推荐系统中转站撑爆服务器 TCP 连接引发的故障
上周五下午,我们在博客中部署了推荐系统,在博文下方显示“最新IT新闻”的地方显示自动推荐的关联博文.我们用的推荐系统是第四范式的推荐服务,我们自己只是搭建了一个推荐系统中转站(基于 ASP.NET C ...
- Python函数的装饰器修复技术(@wraps)
@wraps 函数的装饰器修复技术,可使被装饰的函数在增加了新功能的前提下,不改变原函数名称,还继续使用原函数的注释内容: 方便了上下文环境中不去更改原来使用的函数地方的函数名: 使用方法 from ...
- 开发中,IDEA常用的快捷键
Settings文件: Ctrl+Alt+S 搜索文件:Ctrl+Shift+N 全文搜索: Ctrl+Shift+F 全文替换: Ctrl+Shift+R 搜索内容: Ctrl+F 内容替换: Ct ...