ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

QTcpServer与QTcpSocker使用说明Qt/Tcp/Server

2022-02-27 18:01:22  阅读:387  来源: 互联网

标签:QTcpServer const Qt qint64 Tcp maxSize QHostAddress 监听


QTcpServer使用说明

为了使用计算机的算力都集中到服务器上,可以使用tcp连接到服务器上,让服务器完成运算。客户端负责显示查询到的结果。下面的两个类的基类都是IODevice,所以与QFile对数据的操作是类似的。

image

QTcpServer

这个类是用作监听的类,这个可以用来监听来自客户端的tcp连接。主要用到的方法(API)有:

    // 设置监听
    bool QTcpServer::listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0);

    // 判断当前对象是否在监听, 是返回true,没有监听返回false
    bool QTcpServer::isListening() const

    // 如果当前对象正在监听返回监听的服务器地址信息, 否则返回 QHostAddress::Null
    QHostAddress QTcpServer::serverAddress() const;

    // 如果服务器正在侦听连接,则返回服务器的端口; 否则返回0
    quint16 QTcpServer::serverPort() const

    # address:通过类 QHostAddress 可以封装 IPv4、IPv6 格式的 IP 地址,QHostAddress::Any 表示自动绑定
    # port:   如果指定为 0 表示随机绑定一个可用端口。

    // 得到这个监听服务的子对象
    QTcpSocket *QTcpServer::nextPendingConnection();

这个类的信号

    // 连接错误时
    [signal] void QTcpServer::acceptError(QAbstractSocket::SocketError socketError);
    // 得到一个新的连接时
    [signal] void QTcpServer::newConnection();

QTcpSocket

这个类是tcp连接套节字。可以作为 qtcpserver 的子对象,如 QTcpSocker *tsk = QTcpServer()::nextPendingConnection();这个类常用到的方法(API)有:

    // 连接到服务端
    void QAbstractSocket::connectToHost(const QString &hostName, quint16 port, OpenMode openMode = ReadWrite, NetworkLayerProtocol protocol = AnyIPProtocol);
    void QAbstractSocket::connectToHost(const QHostAddress &address, quint16 port, OpenMode openMode = ReadWrite);

    // 这里面主要的参数就是 地址 与 端口
    // 如果是域名 可以直接写 connectToHost("www.3245hao.com", 980); 如果是ip,则要写 connectToHost(QHostAddress("192.167.2.123"), 980);

在 Qt 中不管调用读操作函数接收数据,还是调用写函数发送数据,操作的对象都是本地的由 Qt 框架维护的一块内存。因此,调用了发送函数数据不一定会马上被发送到网络中,调用了接收函数也不是直接从网络中接收数据,关于底层的相关操作是不需要使用者来维护的。

    # 接收数据 readAll 信号
    // 指定可接收的最大字节数 maxSize 的数据到指针 data 指向的内存中
    qint64 QIODevice::read(char *data, qint64 maxSize);
    // 指定可接收的最大字节数 maxSize,返回接收的字符串
    QByteArray QIODevice::read(qint64 maxSize);
    // 将当前可用操作数据全部读出,通过返回值返回读出的字符串
    QByteArray QIODevice::readAll();

    # 发送数据 write api
    // 发送指针 data 指向的内存中的 maxSize 个字节的数据
    qint64 QIODevice::write(const char *data, qint64 maxSize);
    // 发送指针 data 指向的内存中的数据,字符串以 \0 作为结束标记
    qint64 QIODevice::write(const char *data);
    // 发送参数指定的字符串
    qint64 QIODevice::write(const QByteArray &byteArray);

    # 断开连接
    [signal] void QAbstractSocket::connected();

标签:QTcpServer,const,Qt,qint64,Tcp,maxSize,QHostAddress,监听
来源: https://www.cnblogs.com/mc-r/p/15942917.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有