TCP 服务器
前置
可以参考 TCP 客户端
在这个部分大体与 TCP 客户端部分相同:
- 追加
network
- 包含头文件:
#include <QTcpServer>
- 包含头文件:
#include <QTcpSocket>
与 TCP 客户端相同的是, TCP 服务器也有一个专门的类用于实现相关功能。
TCP Server
初始化
初始化 QTcpServer
类。
对这个指针进行初始化, 在构造函数中初始化对象。
监听
server 对象下, 有 listen()
方法用于监听。
该方法需要传入需要监听的网卡和端口号
// 监听指定的网卡和端口
// QHostAddress::AnyIPv4 -> 任意 IPV4 地址
// PORT 8000 端口
server->listen(QHostAddress::AnyIPv4, PORT);
判断连接
判断是否有客户端发起连接
在客户端连接到服务器后, server
对象会发出一个信号。
在连接信号与槽函数后即可实现有客户端连接后执行后续操作
widget.cpp 槽函数执行代码
// 连接成功后执行的槽函数
void Widget::newClientHandler(){
// 建立 TCP 连接
QTcpSocket *socket = server->nextPendingConnection();
// 返回显示客户端的地址和端口号
// socket->peerAddress().toString() 获取客户端地址 QHostAddress 并转换到 QString
// QString::number(socket->peerPort()) 获取客户端端口号 Quint16 并转换到 QString
ui->IP_Edit->setText(socket->peerAddress().toString());
ui->Port_Edit->setText(QString::number(socket->peerPort()));
}