您的位置:首页 > 理论基础 > 计算机网络

Qt5 TcpSocket 客户端/服务器 通讯实例

2017-02-21 22:21 369 查看
Qt  Tcp   客户端 /服务端通信实例
   客户端 QTcpSocket

[html] view
plain copy

 





   Client.pro  

#-------------------------------------------------  

#  

# Project created by QtCreator 2016-03-23T21:15:18  

#  

#-------------------------------------------------  

  

  

QT       += core gui  

  

  

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets  

  

  

TARGET = Client  

TEMPLATE = app  

  

  

  

  

SOURCES += main.cpp\  

        mainwindow.cpp  

  

  

HEADERS  += mainwindow.h  

  

  

FORMS    += mainwindow.ui  

QT +=network  

mainwindow.h

[html] view
plain copy

 





#ifndef MAINWINDOW_H  

#define MAINWINDOW_H  

  

  

#include <QMainWindow>  

#include<QTcpSocket>  

#include<QString>  

#include<QDataStream>  

#include<QByteArray>  

namespace Ui {  

class MainWindow;  

}  

  

  

class MainWindow : public QMainWindow  

{  

    Q_OBJECT  

  

  

public:  

    explicit MainWindow(QWidget *parent = 0);  

    ~MainWindow();  

private slots:  

    void on_pushButto_conn_clicked();  

  

  

private:  

    QTcpSocket * socket;  

private slots:  

    void connected();  

    void on_pushButton_discon_clicked();  

    void readyread();  

private:  

    Ui::MainWindow *ui;  

};  

  

  

#endif // MAINWINDOW_H  

mainwindow.cpp

[html] view
plain copy

 





#include "mainwindow.h"  

#include "ui_mainwindow.h"  

#include<QHostAddress>  

#include<QMessageBox>  

MainWindow::MainWindow(QWidget *parent) :  

    QMainWindow(parent),  

    ui(new Ui::MainWindow)  

{  

    ui->setupUi(this);  

    this->socket=new QTcpSocket(this);  

}  

  

  

MainWindow::~MainWindow()  

{  

    delete ui;  

}  

  

  

void MainWindow::on_pushButto_conn_clicked()  

{  

    this->socket->connectToHost("127.0.0.1",80100,QTcpSocket::ReadWrite);  

    connect(this->socket,SIGNAL(connected()),this,SLOT(connected()));  

  

  

}  

void MainWindow::connected()  

{  

    QMessageBox::about(this,"提示","连接成功");  

    connect(this->socket,SIGNAL(readyRead()),this,SLOT(readyread()));  

  

  

}  

  

  

void MainWindow::on_pushButton_discon_clicked()  

{  

    this->socket->close();  

}  

void MainWindow::readyread()  

{  

    QMessageBox::about(this,"提示","准备读取");  

    QByteArray arr=this->socket->readAll();  

    QDataStream * dst=new QDataStream(&arr,QIODevice::ReadOnly);/******重点******/  

    QString str1;  

    QString str2;  

    (*dst)>>str1>>str2;  

    this->ui->textBrowser->setText(str1+str2);  

    QMessageBox::about(this,"x",str1+str2);  

}  

main.cpp

[html] view
plain copy

 





#include "mainwindow.h"  

#include <QApplication>  

  

  

int main(int argc, char *argv[])  

{  

    QApplication a(argc, argv);  

    MainWindow w;  

    w.show();  

  

  

    return a.exec();  

}  

服务端通信实例
QTcpServer

Server.pro

[html] view
plain copy

 





#-------------------------------------------------  

#  

# Project created by QtCreator 2016-03-23T20:48:06  

#  

#-------------------------------------------------  

  

  

QT       += core gui  

  

  

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets  

  

  

TARGET = Server  

TEMPLATE = app  

  

  

  

  

SOURCES += main.cpp\  

        mainwindow.cpp  

  

  

HEADERS  += mainwindow.h  

  

  

FORMS    += mainwindow.ui  

QT      +=network  

mainwindow.h

[html] view
plain copy

 





#ifndef MAINWINDOW_H  

#define MAINWINDOW_H  

  

  

#include <QMainWindow>  

#include<QTcpServer>  

#include<QTcpSocket>  

namespace Ui {  

class MainWindow;  

}  

  

  

class MainWindow : public QMainWindow  

{  

    Q_OBJECT  

  

  

public:  

    explicit MainWindow(QWidget *parent = 0);  

    ~MainWindow();  

    QTcpServer * server;  

    QTcpSocket * socket;  

private slots:  

    void newConnection();  

    void ReceiveData();  

    void on_pushButton_2_clicked();  

  

  

    void on_pushButton_clicked();  

  

  

private:  

    Ui::MainWindow *ui;  

};  

  

  

#endif // MAINWINDOW_H  

mainwindow.cpp

[html] view
plain copy

 





#include "mainwindow.h"  

#include "ui_mainwindow.h"  

#include<QTcpServer>  

#include<QTcpSocket>  

#include<QMessageBox>  

#include<QDataStream>  

#include<QString>  

#include<QByteArray>  

MainWindow::MainWindow(QWidget *parent) :  

    QMainWindow(parent),  

    ui(new Ui::MainWindow)  

{  

    ui->setupUi(this);  

    this->socket=0;  

    this->server=new QTcpServer(this);  

    this->server->listen(QHostAddress::Any,80100);  

     QObject::connect(this->server,SIGNAL(newConnection()),this,SLOT(newConnection()));  

}  

  

  

MainWindow::~MainWindow()  

{  

    delete ui;  

}  

void MainWindow::newConnection(){  

    this->socket=this->server->nextPendingConnection();  

    QMessageBox::about(this,"提示","有新的连接!");  

    connect(this->socket,SIGNAL(readyRead()),this,SLOT(ReceiveData()));  

  

  

  

  

  

  

}  

void MainWindow::ReceiveData(){  

  

  

   QByteArray arr=this->socket->readAll();  

   QDataStream dst(arr);  

   QString str1;  

   QString str2;  

   dst>>str1>>str2;  

   this->ui->browser->setText(str1+str2);  

}  

  

  

void MainWindow::on_pushButton_2_clicked()  

{  

    QString str=this->ui->lineEdit->text();  

    QByteArray arr;  

    QDataStream dst(&arr,QIODevice::ReadWrite);/*QDataStream是继承于QIODevice的所以 必须要 设置读写权限*/  

    dst<<QString("信息")<<str;/*这里一定要设置好数据类型*/  

    this->socket->write(arr);  

}  

  

  

void MainWindow::on_pushButton_clicked()  

{  

    this->socket->close();  

}  

main.cpp

[html] view
plain copy

 





#include "mainwindow.h"  

#include <QApplication>  

  

  

int main(int argc, char *argv[])  

{  

    QApplication a(argc, argv);  

    MainWindow w;  

    w.show();  

  

  

    return a.exec();  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: