QTcpSocket简单使用[通俗易懂]

QTcpSocket简单使用[通俗易懂]QTcpServer类提供一个TCP基础服务类继承自QObject这个类用来接收到来的TCP连接,可以指定TCP端口或者用QTcpServer自己挑选一个端口,可以监听一个指定的地址或者所有的机器地址。调用listen()来监听所有的连接,每当一个新的客户端连接到服务端就会发射信号newConnection()调用nextPendingConnection()来接受待处理的连接。返回一个连接的QTcpSocket(),我们可以用这个返回的套接字和客户端进行连接如果有错误,serverErr.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

QTcpServer类

提供一个TCP基础服务类 继承自QObject
这个类用来接收到来的TCP连接,可以指定TCP端口或者用QTcpServer自己挑选一个端口,可以监听一个指定的地址或者所有的机器地址。
 调用listen()来监听所有的连接,每当一个新的客户端连接到服务端就会发射信号newConnection()
调用nextPendingConnection()来接受待处理的连接。返回一个连接的QTcpSocket(),我们可以用这个返回的套接字和客户端进行连接

如果有错误,serverError()返回错误的类型。调用errorString()来把错误打印出来。
当监听连接时候,可以调用serverAddress()和serverPort()来返回服务端的地址和端口。
调用close()来关闭套接字,停止对连接的监听。‘
尽管QTcpServer大多时候设计使用事件循环,也可以不适用事件循环,可以使用waitForNewConnection(),会一直阻塞,知道一个连接可以用或者超时。
在Symbian平台上,同样的需要NetworkServices平台支持。

QTcpSocket 详细描述:
QTcpSocket 类提供一个TCP套接字
TCP是一个面向连接,可靠的的通信协议,非常适合于连续不断的数据传递
QTcpSocket 是QAbstractSocket类非常方便的一个子类,让你创建一个TCP连接和数据流交流。
注意:TCP套接字不能以QIODevice::Unbuffered模式来打开

在Symbian系统上,程序想用这个类的话必须拥有NetworkServices平台支持,如果客户机缺少这个能力,将会导致”恐惧”(不明白为什么这么翻译)

成员函数:
QTcpSocket::QTcpSocket ( QObject * parent = 0 )
以UnconnectedState态创建一个QTcpSocket对象
QTcpSocket::~QTcpSocket ()   [virtual]‘
析构函数,销毁对象

1、mysocket.h

#ifndef MYSOCKET_H
#define MYSOCKET_H

#include <QObject>

class QTcpSocket;
class QTcpServer;

class MySocket : public QObject
{
    Q_OBJECT
public:
    explicit MySocket(QObject *parent = nullptr);
    ~MySocket();
    bool writeData(const QString& data);

signals:
    void reciveData(const QString& data);
public slots:

private:
    QTcpServer* m_tcp_server;
    QTcpSocket* m_tcp_socket;
};

#endif // MYSOCKET_H

2、mysocket.cpp

#include "mysocket.h"

#include <QTcpServer>
#include <QTcpSocket>
#include <QDebug>

MySocket::MySocket(QObject *parent) : QObject(parent),
    m_tcp_server(new QTcpServer),
    m_tcp_socket(nullptr)
{
    m_tcp_server->listen(QHostAddress::Any, 4020);
    connect(m_tcp_server, &QTcpServer::newConnection, this, [this]{
       m_tcp_socket = m_tcp_server->nextPendingConnection();
       qDebug() << "Peer address: " << m_tcp_socket->peerAddress() << "peer port: " << m_tcp_socket->peerPort();
       connect(m_tcp_socket, &QTcpSocket::readyRead, this, [this]{
          QString r_data = QString(m_tcp_socket->readAll());
          qDebug() << r_data;
          emit this->reciveData(r_data);
       });
    });
}

MySocket::~MySocket()
{
    m_tcp_server->close();
    if(m_tcp_socket) delete m_tcp_socket;
    if(m_tcp_server) delete m_tcp_server;
}

bool MySocket::writeData(const QString &data)
{
    if(!m_tcp_socket) return false;
    m_tcp_socket->write(data.toUtf8());
    return true;
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195713.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Idea激活码最新教程2021.3.3版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2021.3.3版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2021 3 3 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2021 3 3 成功激活

    2025年5月21日
    12
  • Android颜色对照表 或html css RGB颜色对照表[通俗易懂]

    Android颜色对照表 或html css RGB颜色对照表[通俗易懂]颜色代码大全 AA指定透明度。00是完全透明。FF是完全不透明。超出取值范围的值将被恢复为默认值。    ffff00ffff33ffff66ffff99ffffccffffffffcc00ffcc33ffcc66ffcc99ffccccffccffff9900

    2022年5月13日
    71
  • 实型变量_C语言实型常数的合法形式

    实型变量_C语言实型常数的合法形式实型变量分为两类:单精度型和双精度型,其类型说明符为float单精度说明符,double双精度说明符。在TurboC中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。双精度型占8个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。实型变量说明的格式和书写规则与整型相同。例如:f

    2025年8月25日
    0
  • 建立数据库,建立一个“学生”表student。[通俗易懂]

    建立数据库,建立一个“学生”表student。[通俗易懂]1.建立数据库,建立一个“学生”表student。2.设计思想:首先利用createdatabase语句建立一个数据库,再用createtable语句按要求建立基本表,再按照规则添加数据。3.实验代码及注释:创建数据库mysql>createdatabaseymz;QueryOK,1rowaffected(0.03sec)使用数据库mysql>us…

    2022年7月24日
    24
  • epub精品电子书下载_丹尼尔·内格里诺

    epub精品电子书下载_丹尼尔·内格里诺郑重声明:本号收录的电子书均来源于互联网或网友分享,链接内容仅作分享交流学习使用,不用于任何商业用途,版权归原作者和出版社所有,如果喜欢,请支持和购买正版,谢谢。下载地址:http://pan.63

    2022年8月3日
    6
  • 2.1.1 操作系统之进程的定义、特征、组成、组织

    文章目录1.进程的定义(1)程序的概念(2)进程的概念(2)进程的定义2.进程的特征3.进程的组成4.进程的组织(1)链接方式(2)索引方式1.进程的定义(1)程序的概念(2)进程的概念一个进程可以包含多个程序(2)进程的定义2.进程的特征3.进程的组成而其中最重要的就是进程控制块PCB(ProcessControlBlock)PCB简介:&nbsp…

    2022年4月13日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号