.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(偽); }
結果: