基本流程

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的更多相关文章

  1. 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网络知识 第十五节课 ...

  2. 我的MYSQL学习心得(十五) 日志

    我的MYSQL学习心得(十五) 日志 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  3. 别人的的MYSQL学习心得(十五) 日志

    我的MYSQL学习心得(十五) 日志 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  4. VMware vSphere服务器虚拟化实验十五 vCenter vShield Manager

    VMware vSphere服务器虚拟化实验十五 vCenter vShield Manager VMware  vShield Manager是专为 VMware vCenter Server 集成 ...

  5. JAVA之旅(三十五)——完结篇,终于把JAVA写完了,真感概呐!

    JAVA之旅(三十五)--完结篇,终于把JAVA写完了,真感概呐! 这篇博文只是用来水经验的,写这个系列是因为我自己的java本身也不是特别好,所以重温了一下,但是手比较痒于是就写出了这三十多篇博客了 ...

  6. 《linux就该这么学》第十五节课:第14,15章,dhcp服务和邮件系统

    (借鉴请改动) 13章收尾 13.6.分离解析技术    1.在主配置文件中改两个any         2.编辑区域配置文件,写入acl,使用match匹配                      ...

  7. centos lamp/lnmp阶段复习 以后搬迁discuz论坛不需要重新安装,只需修改配置文件即可 安装wordpress 安装phpmyadmin 定时备份mysql两种方法 第二十五节课

    centos  lamp/lnmp阶段复习 以后搬迁discuz论坛不需要重新安装,只需修改配置文件即可 安装wordpress  安装phpmyadmin  定时备份mysql两种方法  第二十五节 ...

  8. CCNP路由实验之十五 NAT(网络地址转换)

     CCNP路由实验之十五 NAT(网络地址转换) 众所周知,要让自己的电脑连上Internet,必须要到运营商(ISP)申请一个上网账号,依据此账号申请自己的宽频业务(拨号上网.商业固定IP等等) ...

  9. OpenCV开发笔记(六十五):红胖子8分钟带你深入了解ORB特征点(图文并茂+浅显易懂+程序源码)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  10. Bootstrap <基础二十五>警告(Alerts)

    警告(Alerts)以及 Bootstrap 所提供的用于警告的 class.警告(Alerts)向用户提供了一种定义消息样式的方式.它们为典型的用户操作提供了上下文信息反馈. 您可以为警告框添加一个 ...

随机推荐

  1. Django之路由分发和反向解析

    一.路由分发: 路由分发是指:总路由不再直接做路由与视图函数的对应关系,而是将获取的路由分发给下面的app去处理对应关系 from django.conf.urls import url,includ ...

  2. vue学习之vuex

    1  首先还是安装 npm install vuex --save. 2 在src这种创建目录为store 创建 index.js  (getters.js ,actions.js ,mutation ...

  3. 44.Odoo产品分析 (五) – 定制板块(1) – 管理odoo安装(1)

    查看Odoo产品分析系列--目录 1 管理员的注意事项 在记录重要的配置细节时必须要小心,而且必须要有一个连续性的合适的.让系统能够安装备份并运行在一个可接受的时间内的计划. 1.1 制定实施策略 如 ...

  4. Hadoop Yarn框架原理解析

    在说Hadoop Yarn的原理之前,我们先来看看Yarn是怎样出现的.在古老的Hadoop1.0中,MapReduce的JobTracker负责了太多的工作,包括资源调度,管理众多的TaskTrac ...

  5. .Net Core 在Linux服务器下部署程序--(3). 部署.net core 后端程序

    确认第二步中的软件已安装完成 lrzsz文件上传下载软件 zip与unzip压缩包软件 net core 相关软件 确认上述软件安装完成之后,开始部署程序 创建部署文件夹 我的习惯是在usr文件夹下新 ...

  6. firewalld防火墙设置

    CentOS7/RHEL7系统默认的iptables管理工具是firewalld,不再是以往的iptables-services,命令用起来也是不一样了,当然你也可以选择卸载firewalld,安装i ...

  7. Windows下查看硬连接引用技术

    Win10有了bash,可以方便的进入并用ll查看文件的硬连接数. 但是用powershell直接查看就比较麻烦了,比较曲折的找到了方法: fsutil hardlink list [filename ...

  8. windows PHP 安装 redis 外加扩展

    前置条件:为php7.2搭建redis扩展的前提是在本机上已经成功搭建好php的运行环境,我的电脑的运行环境时 apache2.4+mysql5.5+php7.2. 操作系统为64位,编译环境为Mic ...

  9. jquery中Json操作

    在开发中,我们有可能拿到的不是全的json,而是一部分json格式的数据,这个时候我们需要将其强转为json对象 第一种方法:使用jquery中的$.parseJSON(),但是它对json数据格式的 ...

  10. HTML基础-------HTML标签(3)

    HTML标签(3) 表格 作用:制作一个表格 属性: 标签;table>tr>td(或者th) 语义; table:一个表格 tr:一行 td:一个单元格 th:单元格的表头 captio ...