QT TCPサーバ

.PROファイルに行を追加することに注意してください

QT + =ネットワーク


.hファイル

#ifndefのMAINWINDOW_H
 の#define MAINWINDOW_H

書式#include <QMainWindow> 
書式#include <QTcpServer> 
書式#include <QTcpSocket>

名前空間Uiの{
 クラスメインウィンドウ。
}

クラスのメインウィンドウ:公共QMainWindow
{
    Q_OBJECT

公共明示的なメインウィンドウ(QWidgetの*親= 0 );
    メインウィンドウ();

プライベートスロット:
     無効newconnected();
    のsendData();
    recvData();
    ボイド切断();

プライベート
    Ui::MainWindow *ui;
    QTcpServer * サーバー。
    QTcpSocket * ソケット。
}。

#endifの // MAINWINDOW_H

 

.cppファイル

#include " mainwindow.h " 
の#include " ui_mainwindow.h "

メインウィンドウ::メインウィンドウ(QWidgetの * 親):
    QMainWindow(親)、
    UI(新しい宇井::メインウィンドウ)
{
    かかわらず - > setupUi(この);
    UI - > pushButton->は、setEnabled();
    サーバー = 新しいQTcpServer。
    ソケット = 新しいQTcpSocket。
    もし(!サーバ- >聞く(QHostAddress :: AnyIPv4、quint16(8888 ))){
         リターン
    }
    接続(サーバ、SIGNAL(newConnectionと())、このスロット(newconnected()))。
    CONNECT(UI - >プッシュボタン、SIGNAL(クリック(ブール値))、この、SLOT(のsendData()));
}

メインウィンドウ::メインウィンドウ()
{
    削除UI;
}

無効メインウィンドウ:: newconnected()
{
    IF(サーバ- > hasPendingConnections()){  // サーバが処理する接続を持つ場合、trueを返し、そうでない場合はfalse 
        ソケット=サーバー- > nextPendingConnection();  // 次の保留中の接続は次のように接続されています。 qtcsocketオブジェクトが返されます。
        IF(!Socket->はisValid()){  // ソケットが効果的である場合
            、戻り;
        }
        UI - >ラベル=>のsetText(" 接続" );
        UI - > pushButton->は、setEnabled(真の);
        接続(ソケット、SIGNAL(readyRead())、このスロット(recvData()))。
        CONNECT(ソケット、SIGNAL(切断())、このスロット(切断()))。
    }
}

無効メインウィンドウ::のsendData()
{
    QStringのSTR = UI-> textEdit_2-> toPlainText();
    ソケット - > ライト(str.toStdString()c_str()、str.length())。
}

無効メインウィンドウ:: recvData()
{
    QByteArray STR = socket-> READALL();
    UI - > textEdit-> のsetText(STR);
}

無効メインウィンドウ::切断()
{
    UI - >ラベル=>のsetText(" 切断" );
    UI - > pushButton->は、setEnabled();
}

 

 

結果:

おすすめ

転載: www.cnblogs.com/caozewen/p/12169231.html