PySide6.QtNetwork.QTcpServer

class QTcpServer

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

PySide6.QtNetwork.QTcpServer 的继承图

继承者: QSslServer

概要

方法

虚拟方法

信号

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

这个类使得接受传入的TCP连接成为可能。您可以指定端口或让QTcpServer自动选择一个。您可以监听特定地址或机器上的所有地址。

调用 listen() 使服务器监听传入的连接。每当客户端连接到服务器时,newConnection() 信号就会被发出。当使用 addPendingConnection() 函数将客户端连接添加到待处理连接队列时,pendingConnectionAvailable() 信号就会被发出。

调用nextPendingConnection()以接受挂起的连接作为已连接的QTcpSocket。该函数返回一个指向QTcpSocket的指针,该指针处于ConnectedState状态,您可以使用它与客户端进行通信。

如果发生错误,serverError() 返回错误类型,并且可以调用 errorString() 来获取人类可读的错误描述。

当监听连接时,服务器正在监听的地址和端口可以通过serverAddress()serverPort()获取。

调用 close() 会使 QTcpServer 停止监听传入的连接。

尽管QTcpServer主要是为与事件循环一起使用而设计的,但也可以在没有事件循环的情况下使用它。在这种情况下,你必须使用waitForNewConnection(),它会阻塞直到有连接可用或超时到期。

另请参阅

QTcpSocket 财富服务器 线程化财富服务器 Torrent示例

__init__([parent=None])
Parameters:

父对象QObject

构造一个QTcpServer对象。

parent 被传递给 QObject 构造函数。

acceptError(socketError)
Parameters:

socketErrorSocketError

当接受新连接时发生错误时,会发出此信号。socketError参数描述了发生的错误类型。

addPendingConnection(socket)
Parameters:

socketQTcpSocket

此函数由incomingConnection()调用,用于将socket添加到待处理的传入连接列表中。

注意

如果你不想破坏Pending Connections机制,请不要忘记从重新实现的incomingConnection()中调用此成员。此函数在添加套接字后发出pendingConnectionAvailable()信号。

close()

关闭服务器。服务器将不再监听传入的连接。

另请参阅

listen()

errorString()
Return type:

字符串

返回最近发生的错误的人类可读描述。

另请参阅

serverError()

hasPendingConnections()
Return type:

布尔

如果服务器有挂起的连接,则返回 true;否则返回 false

incomingConnection(handle)
Parameters:

handleqintptr

当有新连接可用时,QTcpServer 会调用此虚拟函数。socketDescriptor 参数是接受连接的本机套接字描述符。

基础实现创建了一个QTcpSocket,设置了套接字描述符,然后将QTcpSocket存储在待处理连接的内部列表中。最后发出newConnection()

重新实现此函数以在连接可用时更改服务器的行为。

如果此服务器正在使用QNetworkProxy,则socketDescriptor可能无法与本机套接字函数一起使用,应仅与setSocketDescriptor()一起使用。

注意

如果在重新实现此方法时创建了另一个套接字,则需要通过调用addPendingConnection()将其添加到待处理连接机制中。

注意

如果你想在另一个线程中将传入的连接作为新的QTcpSocket对象处理,你必须将socketDescriptor传递给另一个线程,并在那里创建QTcpSocket对象,并使用其setSocketDescriptor()方法。

isListening()
Return type:

布尔

如果服务器当前正在监听传入连接,则返回 true;否则返回 false

另请参阅

listen()

listen([address=QHostAddress.Any[, port=0]])
Parameters:
Return type:

布尔

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

成功时返回 true;否则返回 false

另请参阅

isListening()

listenBacklogSize()
Return type:

整数

返回待接受连接的积压队列大小。

另请参阅

setListenBacklogSize()

maxPendingConnections()
Return type:

整数

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

newConnection()

每次有新连接可用时都会发出此信号,无论它是否已添加到待处理连接队列中。

nextPendingConnection()
Return type:

QTcpSocket

返回下一个待处理的连接作为一个已连接的QTcpSocket对象。

套接字作为服务器的子对象创建,这意味着当QTcpServer对象被销毁时,它会自动删除。在使用完毕后显式删除对象仍然是一个好主意,以避免浪费内存。

None 如果没有挂起的连接时调用此函数,则返回。

注意

返回的QTcpSocket对象不能从另一个线程使用。如果你想从另一个线程使用传入的连接,你需要重写incomingConnection()

pauseAccepting()

暂停接受新连接。排队的连接将保留在队列中。

另请参阅

resumeAccepting()

pendingConnectionAvailable()

每次有新连接被添加到待处理连接队列时,都会发出此信号。

proxy()
Return type:

QNetworkProxy

返回此套接字的网络代理。默认情况下使用DefaultProxy

另请参阅

setProxy() QNetworkProxy

resumeAccepting()

恢复接受新连接。

另请参阅

pauseAccepting()

serverAddress()
Return type:

QHostAddress

如果服务器正在监听连接,则返回服务器的地址;否则返回 Null

另请参阅

serverPort() listen()

serverError()
Return type:

SocketError

返回最后发生的错误的错误代码。

另请参阅

errorString()

serverPort()
Return type:

整数

如果服务器正在监听连接,则返回服务器的端口;否则返回0。

另请参阅

serverAddress() listen()

setListenBacklogSize(size)
Parameters:

size – int

设置待接受连接的积压队列大小为size。操作系统可能会减少或忽略此值。默认情况下,队列大小为50。

注意

此属性必须在调用listen()之前设置。

另请参阅

listenBacklogSize()

setMaxPendingConnections(numConnections)
Parameters:

numConnections – int

设置待处理接受连接的最大数量为numConnectionsQTcpServer在调用nextPendingConnection()之前,将不会接受超过numConnections个传入连接。默认情况下,限制为30个待处理连接。

客户端在服务器达到最大挂起连接数后可能仍然能够连接(即QTcpSocket仍然可以发出connected()信号)。QTcpServer将停止接受新的连接,但操作系统可能仍然将它们保留在队列中。

setProxy(networkProxy)
Parameters:

networkProxyQNetworkProxy

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

将此套接字的显式网络代理设置为 networkProxy

要禁用此套接字的代理使用,请使用NoProxy代理类型:

server.setProxy(QNetworkProxy.NoProxy)

另请参阅

proxy() QNetworkProxy

setSocketDescriptor(socketDescriptor)
Parameters:

socketDescriptorqintptr

Return type:

布尔

设置此服务器在监听传入连接时应使用的套接字描述符为socketDescriptor。如果套接字设置成功,则返回true;否则返回false

假定套接字处于监听状态。

socketDescriptor()
Return type:

qintptr

返回服务器用于监听传入指令的本机套接字描述符,如果服务器未在监听,则返回-1。

如果服务器正在使用 QNetworkProxy,返回的描述符可能无法与本地套接字函数一起使用。

waitForNewConnection(msec)
Parameters:

毫秒 – 整数

Return type:

(retval, timedOut)

最多等待 msec 毫秒或直到有传入连接可用。如果有连接可用,则返回 true;否则返回 false。如果操作超时且 timedOut 不是 None,*``timedOut`` 将被设置为 true。

这是一个阻塞函数调用。在单线程的GUI应用程序中使用它是不推荐的,因为整个应用程序将停止响应,直到函数返回。waitForNewConnection()在没有事件循环可用时最为有用。

非阻塞的替代方法是连接到 newConnection() 信号。

如果 msec 为 -1,此函数将不会超时。