CodeLibrary/05_QtCreator_Cplus_TCPServer_20240423/widget.cpp

41 lines
1.2 KiB
C++

#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
// 初始化构造函数
server = new QTcpServer;
// 监听指定的网卡和端口
// QHostAddress::AnyIPv4 -> 任意 IPV4 地址
// PORT 8000 端口
server->listen(QHostAddress::AnyIPv4, PORT);
ui->Message_Edit->insertPlainText("Message: Local Server is open\n");
// 判断是否有客户端发起连接
// 如果有客户端发起连接 调用 newClientHandler 函数接收连接
connect(server, &QTcpServer::newConnection, this, &Widget::newClientHandler);
}
Widget::~Widget()
{
delete ui;
}
// 连接成功后执行的槽函数
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()));
}