(十五)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)向用户提供了一种定义消息样式的方式.它们为典型的用户操作提供了上下文信息反馈. 您可以为警告框添加一个 ...
随机推荐
- WEB前端需要了解的XML相关基础知识
什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没 ...
- Jinja2用法总结
Jinja2用法总结 一:渲染模版 要渲染一个模板,通过render_template方法即可. @app.route('/about/') def about(): # return rende ...
- java工作流引擎Jflow父子流程demo
关键字 驰骋工作流引擎 流程快速开发平台 workflow ccflow jflow .net开源工作流 定义 一个流程A的一个节点,因工作的需要调起另外的流程B,A就叫父流程,B就叫子流程.如果流 ...
- jQuery元素操作
jQuery中创建元素及追加元素 DOM中可以动态创建元素:document.createElement(“标签的名字”); jQuery中同样可以创建元素标签,并且返回的就是jQuery对象,可以直 ...
- MySQL Error Number 1005 Can’t create table(Errno:150)
mysql数据库1005错误解决方法 MySQL Error Number 1005 Can’t create table ‘.\mydb\#sql-328_45.frm’ (errno: 150) ...
- coolite 获取新的页面链接到当前页面指定位置Panel的运用
如下图所示,点击温州市文成县之前,右边是一片空白,点击后生成新的页面 html运用到了coolite的Panel控件 <Center> <ext:Panel ID="Pan ...
- SQL Server(1)数据库基础
一.数据库能够做什么 1.存储大量的数据. 2.保持数据信息的一致.完整. 3.共享和安全. 4.通过组合分析,产生新的有用信息. 二.数据库的基本概念 1.数据库就是“数据”的“仓库”. 2.数据库 ...
- SQLServer之锁简介
锁定义(Definition) 锁定是 DBMS 将访问限制为多用户环境中的行的过程. 以独占方式锁定行或列,不允许其他用户访问锁定的数据,直到锁被释放. 这可确保两个用户不能同时更新行中的同一列. ...
- android测试用例编写
说明:android中写测试用例也是用junit,测试用例代码风格是junit3的风格.java中测试用例中使用junit3需要继承TestCase(junit4则不需要,直接用annotation即 ...
- Gitlab源码库里代码提交后,如何触发jenkins自动构建?
版本库里代码提交后,如何触发jenkins自动构建?这是一个面试题,感觉自己回答的并不好,因为并没有用过这个功能,之前公司实际项目用的是svn版本管理,一般都用立刻构建,和定时任务构建(不管代码是否有 ...