41 lines
1.2 KiB
C++
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()));
|
|
}
|