Qt:QTcpServer

1060 篇文章 298 订阅

QTcpSocket

功能:

  • QTcpSocket类提供一个TCP套接字

引入:

头文件#include <QTcpSocket>
qmakeQT += network
继承QAbstractSocket
继承者QSctpSocket 、QSslSocket

详细说明:

  • TCP (Transmission Control Protocol)是一种可靠的、面向流的、面向连接的传输协议。它特别适合于数据的连续传输。
  • QTcpSocket是QAbstractSocket的一个方便的子类,它允许您建立TCP连接并传输数据流。请参阅QAbstractSocket文档了解详细信息。
  • 注意:TCP套接字不能在QIODevice::Unbuffered模式下打开。

官方文档:https://doc.qt.io/qt-5/qtcpsocket.html

QTcpSocket

原型:

QTcpSocket::QTcpSocket(QObject *parent = nullptr)

功能:

  • 创建状态为UnconnectedState的QTcpSocket对象
    *See alsosocketType().

~QTcpSocket()

原型:

[virtual]QTcpSocket::~QTcpSocket()

功能:

  • 销毁套接字,必要时关闭连接。
  • See also close().

QTcpServer

功能:

  • QTcpServer类提供了一个基于TCP的服务器。

引入:

头文件#include <QTcpServer>
qmakeQT += network
继承QObject
继承者QSctpServer

详细说明:

  • 此类可以接受传入的TCP连接。您可以指定端口或让QTcpServer自动选择一个端口。您可以监听一个特定的地址或所有机器的地址。
  • 调用listen()让服务器侦听传入的连接。然后,每当客户端连接到服务器时,就会发出newConnection()信号。
  • 调用nextPendingConnection()接受挂起的连接作为已连接的QTcpSocket。该函数返回一个指向QAbstractSocket::ConnectedState中的QTcpSocket的指针,您可以使用该指针与客户端通信。
  • 如果发生错误,serverError()返回错误的类型,可以调用errorString()来获取对发生的事情的人类可读的描述。
  • 当侦听连接时,服务器正在侦听的地址和端口作为serverAddress()和serverPort()可用。
  • 调用close()使QTcpServer停止侦听传入的连接。
  • 尽管QTcpServer主要是为与事件循环一起使用而设计的,但也可以不使用事件循环而使用它。在这种情况下,您必须使用waitForNewConnection(),它将阻塞直到连接可用或超时。

官方文档:https://doc.qt.io/qt-5/qtcpserver.html

成员函数

QTcpServer

原型:

QTcpServer::QTcpServer(QObject *parent = nullptr)

功能:

  • 构造一个QTcpServer对象
  • See also listen() andsetSocketDescriptor().

~QTcpServer()

原型:

[virtual]QTcpServer::~QTcpServer()

功能:

  • 销毁QTcpServer对象。如果服务器正在监听连接,套接字将自动关闭。
  • 在删除服务器之前,任何仍然连接的客户端qtcpsocket必须断开连接或重新连接
  • 参见close()

close

原型:

void QTcpServer::close()

功能:

  • 关闭服务器。服务器将不再监听传入的连接。
  • See also listen().

acceptError

原型:

[signal]void QTcpServer::acceptError(QAbstractSocket::SocketError socketError)

功能:

  • 这是一个信号
  • 接受新连接导致错误时,将发出此信号。该socketError参数描述错误的发生的类型。
  • 这个函数是在Qt 5.0中引入的。
  • See alsopauseAccepting()and resumeAccepting().

serverError

原型:

QString QTcpServer::errorString() const

功能:

  • 返回上次发生的错误的错误码。
  • 另请参见errorString()

errorString

原型:

QAbstractSocket::SocketError QTcpServer::serverError() const

功能:

  • 返回最近发生的错误的人类可读的描述。
  • 另请参见serverError()

newConnection

原型:

[signal]void QTcpServer::newConnection()

功能:

  • 这是一个信号
  • 每当有新的连接可用时,都会发出此信号。
  • See also hasPendingConnections()andnextPendingConnection().

setMaxPendingConnections

原型:

void QTcpServer::setMaxPendingConnections(int numConnections)

功能:

  • 将待处理的接受连接的最大数量设置为numConnections。在调用nextPendingConnection()之前,QTcpServer最多接受numConnections个传入连接。默认情况下,限制为30个挂起的连接。
  • 服务器达到其最大未决连接数后,客户端仍可能能够连接(即QTcpSocket仍可以发出connectd()信号)。QTcpServer将停止接受新连接,但是操作系统仍可以将它们保持在队列中。
  • 另请参见maxPendingConnections()和hasPendingConnections()。

hasPendingConnections

原型:

[virtual]bool QTcpServer::hasPendingConnections() const

功能:

  • 如果服务器有挂起的连接,则返回true;否则返回false。
  • 另请参见nextPendingConnection()setMaxPendingConnections()。

addPendingConnection

原型:

[protected]void QTcpServer::addPendingConnection(QTcpSocket *socket)

功能:

  • 该函数由QTcpServer :: incomingConnection()调用,以将套接字添加到未决传​​入连接的列表中。
  • 注意:如果你不想破坏挂起的连接机制,不要忘记从重新实现的incomingConnection()调用这个成员。
  • 此功能在Qt 4.7中引入。
  • 另请参见incomingConnection()

maxPendingConnections

原型:

int QTcpServer::maxPendingConnections() const

功能:

  • 返回待处理的已接受连接的最大数目。默认值为30。

nextPendingConnection

原型:

[virtual]QTcpSocket *QTcpServer::nextPendingConnection()

功能:

  • 返回下一个挂起的连接,作为连接的QTcpSocket对象。
  • 套接字是作为服务器的一个子对象创建的,这意味着当QTcpServer对象被销毁时,它会被自动删除。在使用完对象后,显式地删除它仍然是一个好主意,以避免浪费内存。
  • 如果在没有挂起的连接时调用此函数,则返回nullptr。
  • 注意:返回的QTcpSocket对象不能在另一个线程中使用。如果要使用来自另一个线程的传入连接,则需要重写incomingConnection()。
  • 另请参见hasPendingConnections()。

incomingConnection

原型:

[virtual protected]void QTcpServer::incomingConnection(qintptr socketDescriptor)

功能:

  • 当新连接可用时,此虚拟函数将由QTcpServer调用。该socketDescriptor参数是接受的连接本地套接字描述符。
  • 基本实现创建一个QTcpSocket,设置套接字描述符,然后将QTcpSocket存储在挂起连接的内部列表中。最后,发出newConnection()。
  • 重新实现此函数,以在连接可用时改变服务器的行为。
  • 如果这个服务器正在使用QNetworkProxy,那么socketDescriptor可能不能用于本机套接字函数,而应该仅与QTcpSocket::setSocketDescriptor()一起使用。
  • 注意:如果在重新实现该方法时创建了另一个套接字,则需要通过调用addPendingConnection()将其添加到挂起连接机制中。
  • 注意:如果您想在另一个线程中将传入的连接作为一个新的QTcpSocket对象来处理,您必须将socketDescriptor传递给另一个线程,并在那里创建QTcpSocket对象,并使用其setSocketDescriptor()方法。
  • 另请参阅newConnection()、nextPendingConnection()和addPendingConnection()。

waitForNewConnection

原型:

bool QTcpServer::waitForNewConnection(int msec = 0, bool *timedOut = nullptr)

功能:

  • 最多等待msec毫秒,或直到传入连接可用。
  • 如果连接可用则返回true;否则返回false。
  • 如果操作超时且timedOut不是nullptr, *timedOut将被设置为true。
  • 这是一个阻塞函数调用。在单线程GUI应用程序中不建议使用它,因为整个应用程序将停止响应,直到函数返回为止。waitForNewConnection()在没有事件循环时非常有用。
  • 非阻塞替代方法是连接到newConnection()信号。
  • 如果毫秒为-1,则此功能不会超时。
  • 另请参见hasPendingConnections()nextPendingConnection()。

pauseAccepting

原型:

void QTcpServer::pauseAccepting()

功能:

  • 暂停接受新的连接。排队的连接将保留在队列中。
  • 此功能是在Qt 5.0中引入的。
  • 另请参见resumeAccepting()

resumeAccepting

原型:

void QTcpServer::resumeAccepting()

功能:

  • 恢复接受新连接
  • 此功能是在Qt 5.0中引入的。
  • 另请参见pauseAccepting()

setSocketDescriptor

原型:

bool QTcpServer::setSocketDescriptor(qintptr socketDescriptor)

功能:

  • 设置该服务器侦听到socketDescriptor的传入连接时应使用的套接字描述符。如果成功设置套接字,则返回true;否则返回false。
  • 假定套接字处于侦听状态
  • 另请参见socketDescriptor()isListening()

socketDescriptor

原型:

qintptr QTcpServer::socketDescriptor() const

功能:

  • 返回服务器用来监听传入指令的本机套接字描述符,如果服务器没有监听,则返回-1。
  • 如果服务器正在使用QNetworkProxy,则返回的描述符可能不能用于本机套接字函数。
  • 另请参见setSocketDescriptor()isListening()

serverAddress

原型:

QHostAddress QTcpServer::serverAddress() const

功能:

  • 如果服务器正在监听连接,则返回服务器的地址;否则返回QHostAddress::Null.。
  • See also serverPort()and listen().

serverPort

原型:

quint16 QTcpServer::serverPort() const

功能:

  • 如果服务器正在监听连接,则返回服务器的端口;否则返回0。
  • See also serverAddress()and listen().

isListening

原型:

bool QTcpServer::isListening() const

功能:

  • 如果服务器当前正在监听传入的连接,则返回true;否则返回false。
  • See also listen().

listen

原型:

bool QTcpServer::listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0)

功能:

  • 告诉服务器侦听地址address和port port上的传入连接。如果port为0,则自动选择一个端口。如果address为QHostAddress :: Any,则服务器将在所有网络接口上侦听。

proxy

原型:

QNetworkProxy QTcpServer::proxy() const

功能:

  • 返回此套接字的网络代理。默认情况下使用QNetworkProxy::DefaultProxy。
  • 这个函数是在Qt 4.1中引入的。
  • 另请参阅setProxy()QNetworkProxy。

setProxy

原型:

void QTcpServer::setProxy(const QNetworkProxy &networkProxy)

功能:

  • 将此套接字的显式网络代理设置为networkProxy。
  • 要禁用对此套接字使用代理,请使用·QNetworkProxy :: NoProxy代理类型:
server->setProxy(QNetworkProxy::NoProxy);
  • 此功能在Qt 4.1中引入。
  • 另请参见proxy()QNetworkProxy。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值