PySide6.QtNetwork.QTcpServer¶
- class QTcpServer¶
QTcpServer类提供了一个基于 TCP 的服务器。更多…继承者:
QSslServer概要¶
方法¶
def
__init__()def
close()def
errorString()def
isListening()def
listen()def
pauseAccepting()def
proxy()def
serverAddress()def
serverError()def
serverPort()def
setProxy()
虚拟方法¶
信号¶
def
acceptError()def
newConnection()
注意
本文档可能包含从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示例构造一个
QTcpServer对象。parent被传递给 QObject 构造函数。- acceptError(socketError)¶
- Parameters:
socketError –
SocketError
当接受新连接时发生错误时,会发出此信号。
socketError参数描述了发生的错误类型。- addPendingConnection(socket)¶
- Parameters:
socket –
QTcpSocket
此函数由
incomingConnection()调用,用于将socket添加到待处理的传入连接列表中。注意
如果你不想破坏Pending Connections机制,请不要忘记从重新实现的
incomingConnection()中调用此成员。此函数在添加套接字后发出pendingConnectionAvailable()信号。- close()¶
关闭服务器。服务器将不再监听传入的连接。
另请参阅
- errorString()¶
- Return type:
字符串
返回最近发生的错误的人类可读描述。
另请参阅
- hasPendingConnections()¶
- Return type:
布尔
如果服务器有挂起的连接,则返回
true;否则返回false。- incomingConnection(handle)¶
- Parameters:
handle –
qintptr
当有新连接可用时,
QTcpServer会调用此虚拟函数。socketDescriptor参数是接受连接的本机套接字描述符。基础实现创建了一个
QTcpSocket,设置了套接字描述符,然后将QTcpSocket存储在待处理连接的内部列表中。最后发出newConnection()。重新实现此函数以在连接可用时更改服务器的行为。
如果此服务器正在使用
QNetworkProxy,则socketDescriptor可能无法与本机套接字函数一起使用,应仅与setSocketDescriptor()一起使用。注意
如果在重新实现此方法时创建了另一个套接字,则需要通过调用
addPendingConnection()将其添加到待处理连接机制中。注意
如果你想在另一个线程中将传入的连接作为新的
QTcpSocket对象处理,你必须将socketDescriptor传递给另一个线程,并在那里创建QTcpSocket对象,并使用其setSocketDescriptor()方法。- isListening()¶
- Return type:
布尔
如果服务器当前正在监听传入连接,则返回
true;否则返回false。另请参阅
- listen([address=QHostAddress.Any[, port=0]])¶
- Parameters:
地址 –
QHostAddressport – int
- Return type:
布尔
告诉服务器在地址
address和端口port上监听传入的连接。如果port为 0,则自动选择一个端口。如果address是Any,服务器将在所有网络接口上监听。成功时返回
true;否则返回false。另请参阅
- listenBacklogSize()¶
- Return type:
整数
返回待接受连接的积压队列大小。
- maxPendingConnections()¶
- Return type:
整数
返回待处理接受连接的最大数量。默认值为30。
- newConnection()¶
每次有新连接可用时都会发出此信号,无论它是否已添加到待处理连接队列中。
- nextPendingConnection()¶
- Return type:
返回下一个待处理的连接作为一个已连接的
QTcpSocket对象。套接字作为服务器的子对象创建,这意味着当
QTcpServer对象被销毁时,它会自动删除。在使用完毕后显式删除对象仍然是一个好主意,以避免浪费内存。None如果没有挂起的连接时调用此函数,则返回。注意
返回的
QTcpSocket对象不能从另一个线程使用。如果你想从另一个线程使用传入的连接,你需要重写incomingConnection()。- pauseAccepting()¶
暂停接受新连接。排队的连接将保留在队列中。
另请参阅
- pendingConnectionAvailable()¶
每次有新连接被添加到待处理连接队列时,都会发出此信号。
- proxy()¶
- Return type:
返回此套接字的网络代理。默认情况下使用
DefaultProxy。另请参阅
- resumeAccepting()¶
恢复接受新连接。
另请参阅
- serverAddress()¶
- Return type:
如果服务器正在监听连接,则返回服务器的地址;否则返回
Null。另请参阅
- serverError()¶
- Return type:
返回最后发生的错误的错误代码。
另请参阅
- serverPort()¶
- Return type:
整数
如果服务器正在监听连接,则返回服务器的端口;否则返回0。
另请参阅
- setListenBacklogSize(size)¶
- Parameters:
size – int
设置待接受连接的积压队列大小为
size。操作系统可能会减少或忽略此值。默认情况下,队列大小为50。- setMaxPendingConnections(numConnections)¶
- Parameters:
numConnections – int
设置待处理接受连接的最大数量为
numConnections。QTcpServer在调用nextPendingConnection()之前,将不会接受超过numConnections个传入连接。默认情况下,限制为30个待处理连接。客户端在服务器达到最大挂起连接数后可能仍然能够连接(即
QTcpSocket仍然可以发出connected()信号)。QTcpServer将停止接受新的连接,但操作系统可能仍然将它们保留在队列中。- setProxy(networkProxy)¶
- Parameters:
networkProxy –
QNetworkProxy
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
将此套接字的显式网络代理设置为
networkProxy。要禁用此套接字的代理使用,请使用
NoProxy代理类型:server.setProxy(QNetworkProxy.NoProxy)
另请参阅
- setSocketDescriptor(socketDescriptor)¶
- Parameters:
socketDescriptor –
qintptr- 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,此函数将不会超时。