QT tcpserver

这篇具有很好参考价值的文章主要介绍了QT tcpserver。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 服务端有QTcpServer库,封装了监听操作
    server = new QTcpServer();

    // 直接监听,内部根据传入的ip和端口进行绑定
    server->listen(QHostAddress::AnyIPv4, SERVER_PORT);

    // 对server进行新的连接信号建立信号槽
    connect(server, &QTcpServer::newConnection, this, &Widget::newClientHandler);

}

Widget::~Widget()
{
    delete ui;
}


void Widget::newClientHandler()
{
    // 将获取到的新的连接套接字中获取客户端ip和端口
    socket = server->nextPendingConnection();
    ui->hostLineEdit->setText(socket->peerAddress().toString());
    ui->portLineEdit->setText(QString::number(socket->peerPort()));


    // 新的消息到来时,connect 数据read和处理信号槽函数
    connect(socket, &QTcpSocket::readyRead, this, &Widget::clientInfoSlot);
}


void Widget::clientInfoSlot()
{
    ui->chatLineEdit->setText(QString(socket->readAll()));
}

void Widget::on_closeButton_clicked()
{
    socket->close();
}


// tcpclient
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    socket = new QTcpSocket;
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_connectButton_clicked()
{
    // 连接服务器
    socket->connectToHost(ui->hostLineEdit->text(), ui->portLineEdit->text().toInt());

    // 连接成功后,socket会发出一个connected的信号,使用lambda作为信号槽函数
    connect(socket, &QTcpSocket::connected, [this](){
        // 打开一个新的聊天窗口,这里不能局部变量,因为新窗口需要长久显示
        // 在堆区申请空间,否则对象生命周期结束后就释放了
        // 聊天窗口需要进行发送,所以需要socket
        // 原来的登录窗口需要进行隐藏
        this->hide();
        Chat *ct = new Chat(socket);
        ct->show();
    });
}


// 建立连接成功后的聊天窗口
#include "chat.h"
#include "ui_chat.h"
#
Chat::Chat(QTcpSocket *socket, QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Chat)
{
    ui->setupUi(this);
    this->socket = socket;
}

Chat::~Chat()
{
    delete ui;
}

void Chat::on_sendButton_clicked()
{
    QByteArray ba;
    ba.append(ui->chatLineEdit->text());

    socket->write(ba);
}


文章来源地址https://www.toymoban.com/news/detail-701747.html

到了这里,关于QT tcpserver的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QTcpServer简单的TCP服务器连接

    简单实现控制TCP服务器获取连接的套接字。点击断开服务器即可关闭所有连接,最大连接数量为5个。 声明源文件 声明的头文件

    2024年02月08日
    浏览(45)
  • TCP通信之QTcpServer和QTcpSocket,服务器和客户端通讯

    TCP传输控制协议 是一个可靠的(相对于UDP),面向流,面向连接的运输协议。 Socket 俗称“套接字”。就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地

    2024年02月12日
    浏览(67)
  • python实现TCPserver

    python实现TCPserver是一件简单的事情,只要通过socket这个模块就可以实现。 相关文章见: python实现TCPclient-CSDN博客 1、概念 TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层协议。TCP协议主要用于在网络上建立稳定的连接,确保数据的可靠传输。

    2024年02月08日
    浏览(24)
  • CMake TcpServer项目 链接静态库/动态库

    一、链接静态库   查看项目结构 CMakeLists.txt  执行命令和结果:   二、链接动态库 查看项目结构 CMakeLists.txt 执行命令和结果:

    2024年01月22日
    浏览(45)
  • C# 解决Socket/TCPServer监听端口释放失败的问题

    使用Socket建立了TCPServer开启监听后,关闭连接无法成功。 亦或是关闭连接后,二次创建仍显示端口占用问题。 ①可能是数据流还在传输,导致TCPServer无法关闭。不能直接调用Close()方法。 解决方法:在关闭前,结束全部数据流的传输,再Close,即可成功关闭监听,释放监听端

    2023年04月20日
    浏览(47)
  • 基于openssl v3搭建ssl安全加固的c++ tcpserver

    tcp server和tcp client同时使用openssl库,可对通信双方流通的字节序列进行加解密,保障通信的安全。本文以c++编写的tcp server和tcp client为例子,openssl的版本为v3。 openssl项目中的config脚本需要用到perl-IPC-Cmd工具。 安装的结果放在目录/opt/openssl中。 安装完毕后,结果如下图所示:

    2024年01月25日
    浏览(46)
  • Python网络编程之udp编程、黏包以及解决方案、tcpserver

    Hello,大家好我是景天,上一章我们聊打了Python网络编程,详细介绍了基于TCP协议的编程。TCP协议,每次都要经过三次握手才能建立连接,效率比较低。有没有更快的数据传输方式呢? 今天我们就一起谈谈UDP。 udp与tcp基本一样,就是协议类型改下即可 udp第一次只能客户端发

    2024年02月19日
    浏览(37)
  • 重写Sylar基于协程的服务器(7、TcpServer & HttpServer的设计与实现)

    重写Sylar基于协程的服务器系列: 重写Sylar基于协程的服务器(0、搭建开发环境以及项目框架 || 下载编译简化版Sylar) 重写Sylar基于协程的服务器(1、日志模块的架构) 重写Sylar基于协程的服务器(2、配置模块的设计) 重写Sylar基于协程的服务器(3、协程模块的设计) 重写

    2024年02月21日
    浏览(37)
  • 【LWIP】stm32用CubeMX(6.4版)配置LwIP+Ping+TCPclient+TCPserver发送信息到PC(操作部分)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 这是我写的第一篇博客,欢迎大家给点鼓励和提出建议! 本人由于理想和爱好,辞去土木工作,于不到一个月前入职某科技公司开始从事嵌入式,专业能力和刚毕业的大学生一样都是很薄弱的。然后被

    2024年02月03日
    浏览(33)
  • 【Qt】Qt 开发环境安装 ( Qt 版本 5.14.2 | Qt 下载 | Qt 安装 )

    Qt 开发环境下载地址 : https://download.qt.io/archive/qt/ 该界面可以下载 Qt 各个版本的开发环境 ; Qt 版本选择 , Qt 的各个大版本都在同步更新 , 如 5.1 , 5.9 , 5.14 , 6.0 等 , 每个版本都有不同的性能和功能 , 每个版本进入后的二级目录的小版本 , 尽量选择最新的版本 ; 如进入 5.14 目录后

    2024年02月14日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包