Qt扫盲- QTcpServer理论总结

QTcpServer理论总结

  • 一、概述
  • 二、注意事项

一、概述

QTcpServer 这个类可以接受传入的TCP连接。 QTcpServer 其实就是一个 TCP 服务器 ,我们可以指定端口或让QTcpServer自动选择一个。你可以监听一个特定的地址,也可以监听所有机器的地址。当然常用的就是监听所有的机器地址。

一个 连接的标识其实就是IP+端口。

调用 listen() 让服务器监听传入的连接。每次客户端连接到服务器时,都会触发 newConnection() 信号。

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

如果发生了错误,serverError() 会返回错误的类型,而 errorString() 则可以被调用,以获得人类可读的错误描述。
在监听连接时,服务器监听的地址和端口可以通过 serverAddress() 和 serverPort() 获得。

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

虽然 QTcpServer 主要是为使用事件循环而设计的,但也可以不使用事件循环。在这种情况下,必须使用 waitForNewConnection(),它会阻塞连接,直到连接可用或超时。

二、注意事项

在 QTcpServer 里面也会管理这个 连接的个数限制,一般用的是 setMaxPendingConnections(int numConnections) ,这个将待决接受连接的最大数量设置为numConnections。在调用nextPendingConnection()之前,QTcpServer将接受不超过numConnections的传入连接。默认情况下,连接数限制为30个。
客户端在服务器达到其挂起连接的最大数量后仍然能够连接(即,QTcpSocket仍然可以发出connected()信号)。QTcpServer将停止接受新连接,但操作系统可能仍然将它们保存在队列中。

同时我们也可以设置 这个 服务器是否暂停连接或者继续连接等功能 使用的是 pauseAccepting() 和 resumeAccepting()

你可能感兴趣的:(#,▶,Qt扫盲,QTcpServer理论,Qt,Tcp轻量级服务器,Qt服务器,Tcp通信)