QT TCP CONNECTOR 1.0
Данное приложение написано в ходе изучение работы Qt с TCP-сокетами, для их тестирования. Программа умеет подключаться, отсылать сообщение и принимать ответ.
mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QTcpSocket> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_pushButton_Connect_clicked(); void on_pushButton_Send_clicked(); void socket_Read_Data(); void socket_Disconnected(); private: Ui::MainWindow *ui; QTcpSocket *socket; }; #endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QSebug> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); this->setWindowTitle("TCP Connector 1.0"); socket = new QTcpSocket(); //Connect signal slot QObject::connect(socket, &QTcpSocket::readyRead, this, &MainWindow::socket_Read_Data); QObject::connect(socket, &QTcpSocket::disconnected, this, &MainWindow::socket_Disconnected); ui->pushButton_Send->setEnabled(false); ui->lineEdit_IP->setText("madmentat.ru"); ui->lineEdit_Port->setText("5555"); } MainWindow::~MainWindow() { delete this->socket; delete ui; } void MainWindow::on_pushButton_Connect_clicked() { if(ui->pushButton_Connect->text() == tr("Connect")) { QString IP; int port; //Get IP address IP = ui->lineEdit_IP->text(); //Get the port number port = ui->lineEdit_Port->text().toInt(); //Cancel existing connections socket->abort(); //Connecting servers socket->connectToHost(IP, port); //Waiting for the connection to succeed if(!socket->waitForConnected(30000)) { qDebug() << "Connection failed!"; return; } qDebug() << "Connect successfully!"; //Send key enablement ui->pushButton_Send->setEnabled(true); //Modify keyword text ui->pushButton_Connect->setText("Disconnect"); } else { //Disconnect socket->disconnectFromHost(); //Modify keyword text ui->pushButton_Connect->setText("Connect"); ui->pushButton_Send->setEnabled(false); } } void MainWindow::on_pushButton_Send_clicked() { qDebug() << "Send: " << ui->textEdit_Send->toPlainText(); //Get the content of the text box and send it as ASCII code socket->write(ui->textEdit_Send->toPlainText().toLatin1()); socket->flush(); ui->textEdit_Recv->clear(); } void MainWindow::socket_Read_Data() { QByteArray buffer; //Read Buffer Data buffer = socket->readAll(); if(!buffer.isEmpty()) { QString str = ui->textEdit_Recv->toPlainText(); str+=tr(buffer); //Refresh display ui->textEdit_Recv->setText(str); } } void MainWindow::socket_Disconnected() { //Send button failure ui->pushButton_Send->setEnabled(false); //Modify keyword text ui->pushButton_Connect->setText("Connect"); qDebug() << "Disconnected!"; }