1. 程式人生 > >Qt5 TcpSocket 客戶端/伺服器 通訊例項

Qt5 TcpSocket 客戶端/伺服器 通訊例項

Qt  Tcp   客戶端 /服務端通訊例項
   客戶端 QTcpSocket
  1.    Client.pro  
  2. #-------------------------------------------------  
  3. #  
  4. # Project created by QtCreator 2016-03-23T21:15:18  
  5. #  
  6. #-------------------------------------------------  
  7. QT       += core gui  
  8. greaterThan(QT_MAJOR_VERSION, 4): QT += widgets  
  9. TARGET = Client
  10. TEMPLATE = app
  11. SOURCES += main.cpp\  
  12.         mainwindow.cpp  
  13. HEADERS  += mainwindow.h  
  14. FORMS    += mainwindow.ui  
  15. QT +=network  




mainwindow.h
  1. #ifndef MAINWINDOW_H  
  2. #define MAINWINDOW_H  
  3. #include <QMainWindow>
  4. #include<QTcpSocket>
  5. #include<
    QString>
  6. #include<QDataStream>
  7. #include<QByteArray>
  8. namespace Ui {  
  9. class MainWindow;  
  10. }  
  11. class MainWindow : public QMainWindow  
  12. {  
  13.     Q_OBJECT  
  14. public:  
  15.     explicit MainWindow(QWidget *parent = 0);  
  16.     ~MainWindow();  
  17. private slots:  
  18.     void on_pushButto_conn_clicked();  
  19. private:  
  20.     QTcpSocket * socket;  
  21. private slots:  
  22.     void connected();  
  23.     void on_pushButton_discon_clicked();  
  24.     void readyread();  
  25. private:  
  26.     Ui::MainWindow *ui;  
  27. };  
  28. #endif // MAINWINDOW_H  




mainwindow.cpp
  1. #include "mainwindow.h"  
  2. #include "ui_mainwindow.h"  
  3. #include<QHostAddress>
  4. #include<QMessageBox>
  5. MainWindow::MainWindow(QWidget *parent) :  
  6.     QMainWindow(parent),  
  7.     ui(new Ui::MainWindow)  
  8. {  
  9.     ui->setupUi(this);  
  10.     this->socket=new QTcpSocket(this);  
  11. }  
  12. MainWindow::~MainWindow()  
  13. {  
  14.     delete ui;  
  15. }  
  16. void MainWindow::on_pushButto_conn_clicked()  
  17. {  
  18.     this->socket->connectToHost("127.0.0.1",80100,QTcpSocket::ReadWrite);  
  19.     connect(this->socket,SIGNAL(connected()),this,SLOT(connected()));  
  20. }  
  21. void MainWindow::connected()  
  22. {  
  23.     QMessageBox::about(this,"提示","連線成功");  
  24.     connect(this->socket,SIGNAL(readyRead()),this,SLOT(readyread()));  
  25. }  
  26. void MainWindow::on_pushButton_discon_clicked()  
  27. {  
  28.     this->socket->close();  
  29. }  
  30. void MainWindow::readyread()  
  31. {  
  32.     QMessageBox::about(this,"提示","準備讀取");  
  33.     QByteArray arr=this->socket->readAll();  
  34.     QDataStream * dst=new QDataStream(&arr,QIODevice::ReadOnly);/******重點******/  
  35.     QString str1;  
  36.     QString str2;  
  37.     (*dst)>>str1>>str2;  
  38.     this->ui->textBrowser->setText(str1+str2);  
  39.     QMessageBox::about(this,"x",str1+str2);  
  40. }  


main.cpp
  1. #include "mainwindow.h"  
  2. #include <QApplication>
  3. int main(int argc, char *argv[])  
  4. {  
  5.     QApplication a(argc, argv);  
  6.     MainWindow w;  
  7.     w.show();  
  8.     return a.exec();  
  9. }  



服務端通訊例項
QTcpServer


Server.pro
  1. #-------------------------------------------------  
  2. #  
  3. # Project created by QtCreator 2016-03-23T20:48:06  
  4. #  
  5. #-------------------------------------------------  
  6. QT       += core gui  
  7. greaterThan(QT_MAJOR_VERSION, 4): QT += widgets  
  8. TARGET = Server
  9. TEMPLATE = app
  10. SOURCES += main.cpp\  
  11.         mainwindow.cpp  
  12. HEADERS  += mainwindow.h  
  13. FORMS    += mainwindow.ui  
  14. QT      +=network  



mainwindow.h




  1. #ifndef MAINWINDOW_H  
  2. #define MAINWINDOW_H  
  3. #include <QMainWindow>
  4. #include<QTcpServer>
  5. #include<QTcpSocket>
  6. namespace Ui {  
  7. class MainWindow;  
  8. }  
  9. class MainWindow : public QMainWindow  
  10. {  
  11.     Q_OBJECT  
  12. public:  
  13.     explicit MainWindow(QWidget *parent = 0);  
  14.     ~MainWindow();  
  15. 相關推薦

    Qt5 TcpSocket 客戶/伺服器 通訊例項

    Qt  Tcp   客戶端 /服務端通訊例項    客戶端 QTcpSocket    Client.pro   #-------------------------------------------------   #   # Project

    Linux下Socket客戶伺服器通訊

    Linux/Unix系統一切都是檔案 Linux系統中,存在一個虛擬檔案系統VFS,把一切實體視為檔案,包括普通檔案、音視訊、輸入輸出裝置等。這樣,作業系統可以可以提供統一的介面來操作任何實體。每個“檔案”建立後,都有一個檔案描述符(File Describer),檔案描述符是一個正

    unix網路程式設計卷一: 第八章:簡單UDP客戶伺服器通訊(二)-解決客戶一直等待問題

    接上: 當伺服器未啟動,客戶端啟動後,傳送訊息,會造成客戶端一直等待,Sendto之後卡死在Recvfrom,然後進行修改。 伺服器程式碼不變: #include"unp.h" intmain(int argc, char **argv) { intsockfd; s

    Socket簡介及客戶伺服器連線例項

    注:  在客戶端遊戲開發中,使用HTTP進行網路通訊的比較少,一般使用的都是Socket進行通訊。而HTTP一般用於網頁或者網頁遊戲。 【Socket簡介】 1、套接字(socket)概念     套接字(socket)是通訊的基石,是支援TCP/IP協議的網路通訊的基本操

    第一個corba 程式 實現客戶伺服器通訊 JACORB

    JacORB的應用開發一般分為以下五步: 1.寫IDL介面定義編譯IDL 2.介面定義生成Java類 3.實現步驟2中生成的介面 4.寫伺服器啟動類,並註冊到ORB 5.寫客戶端去獲取服務物件引用 2) 在系統環境變數中設定

    C#一個伺服器多個客戶Socket通訊

    原理: 啟動服務端後,服務端通過持續監聽客戶端發來的請求,一旦監聽到客戶端傳來的資訊後,兩端便可以互發資訊了。伺服器端需要繫結一個IP和埠號,用於客戶端在網路中尋找並建立連線。資訊傳送原理:將手動輸入字串資訊轉換成機器可以識別的位元組陣列,然後呼叫套接字的Send()方法將位元組陣列傳送出去

    1.SDL2_net TCP伺服器客戶通訊

    這幾天打算把以前做的遊戲嘗試加入區域網聯機,恰巧SDL提供了對應的庫,即SDL2_net。 1.安裝 我的系統是ubuntu,安裝相對簡單,下面一個命令即可: sudo apt install libsdl2-net-dev 等待安裝完成即可。 如果使用的是window,可以去官

    (QT) C++ 版本IM通訊軟體(客戶+伺服器文字聊天、檔案斷點續傳、線上使用者搜尋)

    緊接著上一節課程,這次的作業是要求實現一個簡易版的“QQ”,可支援“軟體需求”所列出的功能。當時由於圖方便便選擇了QTCPSocket進行整個過程的通訊(事後才知道有多坑)。服務端介面比較簡單,就幾個按鈕一個進度條,主要在客戶端實現了基本的功能和介面。整個學習和

    C#伺服器客戶通訊伺服器

    Tcp協議+socket 1.伺服器端開始監聽 //通過winform視窗輸入的伺服器ip地址和埠號  myip = IPAddress.Parse(textBox1.Text);  myport = Int32.Parse(textBox2.Text);

    Vue+Java servlet 通過websocket實現伺服器客戶雙向通訊

    1. vue程式碼 methods: { //在方法裡呼叫 this.websocketsend()傳送資料給伺服器 onConfirm () { //需要傳輸的資料 let data = { cod

    C#實現伺服器客戶之間通訊

    TCP  套接字程式設計 伺服器端實現步驟: 1、使用Socket類建立套接字。 2、利用Bind方法將建立的套接字繫結到指定的地址結構。 3、利用Listen方法設定套接字為監聽模式,使得伺服器進入被動開啟狀態。 4、接受客戶端的連線請求。 5、接收、應答客戶端的資料請求

    基於非阻塞socket的多執行緒伺服器的實現------一個伺服器如何與多個客戶進行通訊

          我們首先來看服務端(涉及非阻塞socket和多執行緒): #include <stdio.h> #include <winsock2.h> #include <windows.h> #pragma comment(li

    nodejs+expressjs+ws實現了websocket即時通訊,伺服器客戶互相通訊

    nodejs程式碼 // 匯入WebSocket模組: const WebSocket = require('ws'); // 引用Server類: const WebSocketServer = WebSocket.Server;

    Java實現簡單的Socket伺服器客戶字串通訊(適合初學者閱讀)

           近段時間,頻繁看到很多學生做畢業設計用到了Socket通訊技術,問題非常多,特寫一個小例子,希望對馬上畢業的同學有所幫助。如果希望學習的更加深入,需要掌握的知識有:面向物件、多執行緒、Socket通訊、IO流、異常處理 伺服器端程式碼: import java

    unity幀同步遊戲極簡框架及例項(附客戶伺服器原始碼)

    閱前提示:  此框架為有幀同步需求的遊戲做一個簡單的示例,實現了一個精簡的框架,本文著重講解幀同步遊戲開發過程中需要注意的各種要點,伴隨框架自帶了一個小的塔防sample作為演示. 目錄:

    Linux下簡單的網路程式設計筆記(模擬簡單的伺服器客戶通訊 1-伺服器

    一.伺服器端     (一).建立連線的條件:伺服器必須處於監聽狀態,由客戶端發起連線請求     bind之前可新增以下程式碼解決關閉伺服器後端口仍被佔用的問題 // 設定套接字選項避免地址使用錯誤       int on=1;       if((setsoc

    Java伺服器客戶通訊中物件流的使用

    在使用java物件流的時候,首先要保證通訊雙方各有一個公用的包,裡面的內容相同,注意異常的丟擲。 相同的包 package common; public class User implements

    Linux----網路程式設計(TCP網路通訊客戶伺服器程式設計實現多程序)

    1、伺服器ser.c 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <unistd.h> 4 #include <assert.h> 5 #in

    利用訊息佇列實現伺服器客戶通訊

    1.server.c #include"utili.h" #define SND_TYPE 200 #define RCV_TYPE 100 typedef struct MsgType {

    socket程式設計(一),實現伺服器客戶簡單通訊

    本節主講客戶端向服務傳送資訊,伺服器轉發給客戶端,當然也可以稍微改一下程式碼可以實現互傳訊息,不再贅述。 難點在於伺服器端的程式碼思路: (1)主程式Socket socket=server.acc