Qt TCP Socket编程:打造简易客户端
#ifndef MAINWINDOW_H #define MAINWINDOW_H
#include
namespace Ui { class MainWindow; }
class MainWindow : public QMainWindow { Q_OBJECT
public: explicit MainWindow(QWidget *parent = 0); ~MainWindow();
private slots: void on_pushButton_clicked();
void on_pushButton_2_clicked();
void on_pushButton_3_clicked();
private: Ui::MainWindow *ui; QTcpSocket * tcpSoket; };
#endif // MAINWINDOW_H
#include 'mainwindow.h'
#include 'ui_mainwindow.h'
#include
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); tcpSoket = nullptr; tcpSoket = new QTcpSocket(this); //创建通信对象
setWindowTitle('socket客户端');
connect(tcpSoket,&QTcpSocket::connected,[=]{
ui->textEdit->setText(QString('连接成功'));
});
connect(tcpSoket,&QTcpSocket::readyRead,[=]{
QByteArray array = tcpSoket->readAll();
ui->textEdit->append(array);
});
}
MainWindow::~MainWindow() { delete ui; }
//连接 void MainWindow::on_pushButton_clicked() { if(ui->lineEdit->text().isEmpty() || ui->lineEdit_2->text().isEmpty()){ qDebug() << 'IP/Port不能为空'; return; }
QString str = ui->lineEdit->text();
qint16 port = ui->lineEdit_2->text().toInt();
//通信套接字,通过协议栈触发
tcpSoket->connectToHost(str,port);
}
void MainWindow::on_pushButton_2_clicked() { if(tcpSoket == nullptr){ qDebug() << '套接字为空'; return; }
QString str = ui->textEdit->toPlainText();
tcpSoket->write(str.toUtf8().data());
ui->textEdit->clear();
}
void MainWindow::on_pushButton_3_clicked() { if(tcpSoket == nullptr){ qDebug() << '断开套接字为空'; return; }
tcpSoket->disconnectFromHost();
tcpSoket->close();
tcpSoket = nullptr;
}
原文地址: http://www.cveoy.top/t/topic/fCrG 著作权归作者所有。请勿转载和采集!