(十五)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)向用户提供了一种定义消息样式的方式.它们为典型的用户操作提供了上下文信息反馈. 您可以为警告框添加一个 ...
随机推荐
- 关于HTTPS的简要内容
HTTPS是什么? 超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HT ...
- hive基本操作与应用
通过hadoop上的hive完成WordCount 启动hadoop Hdfs上创建文件夹 上传文件至hdfs 启动Hive 创建原始文档表 导入文件内容到表docs并查看 用HQL进行词频统计,结果 ...
- 移动端video不全屏播放
<div class="m-video"> <video x5-playsinline="" playsinline="" ...
- 前端开发之基础知识-HTML(一)
1.1 html概述和基本结构 html概述 HTML是 HyperText Mark-up Language 的首字母简写,意思是超文本标记语言,超文本指的是超链接,标记指的是标签,是一种用来制作网 ...
- Redis笔记-Sentinel哨兵模式
Redis以主从的模式搭建集群后,如果主节点Master挂掉,虽然可以实现将备用节点Slave切换成主节点,但是Redis本身并没有自动监控机制,需要借助Sentinel哨兵模式,实现监控并实现自动切 ...
- 深入理解内存映射mmap
内存映射mmap是Linux内核的一个重要机制,它和虚拟内存管理以及文件IO都有直接的关系,这篇细说一下mmap的一些要点. 修改(2015-11-12):Linux的虚拟内存管理是基于mmap来实现 ...
- IBM developer:Setting up the Kafka plugin for Ranger
Follow these steps to enable and configure the Kafka plugin for Ranger. Before you begin The default ...
- 【转】不需要 Root,也能用上强大的 Xposed 框架:VirtualXposed
如果你喜欢折腾 Android 设备,那么你应该对 Xposed 的大名有所耳闻. 这个第三方框架,让许多 Android 玩家都爱不释手.通过对系统框架的「偷天换日」,它可以修改系统与应用的各种数据 ...
- LINUX配置过程记录(二) 工具安装
安装谷歌游览 sudo apt-get update sudo apt-get install google-chrome-stable Ubuntu 16.04下源码安装Catkin https:/ ...
- C语言函数的格式
#include <stdio.h>#include <stdlib.h>extern int addf(int a,int b);//函数能多次声明//int addf(in ...