#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); // 初始化 socket 类 socket = new QTcpSocket; } Widget::~Widget() { delete ui; } void Widget::on_ConnectButton_clicked() { // 获取用户输入的 IP 地址和端口号 QString target_ip = ui->IP_Edit->text(); QString target_port= ui->Port_Edit->text(); // 提示用户开始连接服务器 ui->Message_Edit->clear(); ui->Message_Edit->insertPlainText("connect to " + target_ip + ":" + target_port + " ...\n"); // 连接服务器 // QHostAddress(target_ip) -> 将 QString 类型转换为 QHostAddress 类型 // target_port.toUShort() -> 将 QString 类型转换为 quint16 类型 socket->connectToHost(QHostAddress(target_ip), target_port.toUShort()); // 判断服务器是否连接成功 // 如果连接成功, socket 对象会发出一个信号 connect(socket, &QTcpSocket::connected, [this](){ // 连接成功后输出用户提示 ui->Message_Edit->insertPlainText("Message: connected!\n"); }); // 连接异常 // 当连接状态异常, 例如断开连接, socket 对象也会发出一个信号 // &QTcpSocket::disconnect -> 连接断开信号 connect(socket, &QTcpSocket::disconnected, [this](){ // 提示用户连接断开 ui->Message_Edit->insertPlainText("Message: disconnect!\n"); }); }