QT中的SOCKET的通訊

2021-06-18 16:58:59 字數 3086 閱讀 7411

**

1、服務端程式

[cpp]view plain

copy

print?

//ui_widget.h

#ifndef ui_widget_h

#define ui_widget_h

#include 

#include 

#include 

#include 

#include 

#include 

#include 

qt_begin_namespace  

class ui_widget  

// setupui

void retranslateui(qwidget *widget)  

// retranslateui

};  

namespace ui ;  

} // namespace ui

qt_end_namespace  

#endif // ui_widget_h

#ifndef widget_h

#define widget_h

#include 

#include 

namespace ui  

class widget : public qwidget  

;  #endif // widget_h

#include "widget.h"

#include "ui_widget.h"

#include 

widget::widget(qwidget *parent)  

: qwidget(parent), ui(new ui::widget)  

else  

setwindowtitle(tr("伺服器端"));  

}  widget::~widget()  

void widget::send()  

/*開始傳送資料*/

//初始化長度

int len=0;  

//udpsocket->writedatagram(傳送的資料,傳送資料的長度,ip,埠); 返回乙個長度.

len=udpsocket->writedatagram(text.tolatin1(),text.length(),*hostaddr1,port1);  

if(len)  

box.exec();  

}  void widget::receive()  

}  

#include 

#include "widget.h"

int main(int argc, char *argv)    

2、客戶端程式

[cpp]view plain

copy

print?

//ui_widget.h

#ifndef ui_widget_h

#define ui_widget_h

#include 

#include 

#include 

#include 

#include 

#include 

#include 

qt_begin_namespace  

class ui_widget  

// setupui

void retranslateui(qwidget *widget)  

// retranslateui

};  

namespace ui ;  

} // namespace ui

qt_end_namespace  

#endif // ui_widget_h

#ifndef widget_h

#define widget_h

#include 

#include 

namespace ui  

class widget : public qwidget  

;  #endif // widget_h

#include "widget.h"

#include "ui_widget.h"

#include 

#include 

widget::widget(qwidget *parent)  

: qwidget(parent), ui(new ui::widget)  

else  

connect(ui->close,signal(clicked()),this,slot(close()));  

}  widget::~widget()  

void widget::send()  

/*開始傳送資料*/

//初始化長度

int len=0;  

//udpsocket->writedatagram(傳送的資料,傳送資料的長度,ip,埠); 返回乙個長度.

len=udpsocket->writedatagram(text.tolatin1(),text.length(),*hostaddr2,port2);    //傳送的字元傳送到ip為10.10.19.161和埠為4445的服務端

if(len)  

box.exec();  

}  void widget::receive()  

}  

#include 

#include "widget.h"

int main(int argc, char *argv)    

3、執行程式如下。

客戶端傳送receive字元時伺服器接收框中顯示receive。服務端傳送service時,客戶端接收框中顯示service

4、說明

本程式實際實現的是tcp協議,因為雙方都繫結了自己的ip和埠,只有同時識別ip和埠號才能正確的傳送和接收資料。

不過,也可以更改為udp協議或直接用廣播的形式。

這個程式只是個簡單的例項,但可以通過這個小的例項,將其嵌入到大型的程式裡面,以實現複雜的socket通訊。

Qt中的Socket通訊

qt中的socket通訊 qt中提供的所有的socket類都是非阻塞的。qt中常用的用於socket通訊的套接字類 tcpserver.h class tcpserver public qmainwindow tcpserver.cpp tcpserver tcpserver qwidget par...

QT 程序間通訊 Socket通訊

通過qt提供的qtnetwork模組即可實現程序間通訊,tcp ip在實現應用程式和程序內部通訊或與遠端程序間的通訊方面非常有用。qtnetwork模組提供的類能夠建立基於tcp ip的客戶端與服務端應用程式。為實現底層的網路訪問,可以使用qtcpsocket qtcpserver和qudpsock...

QT中的SOCKET程式設計

作業系統 arm linux qt版本 qt 2.3.2 for linux gui qtopia 在linux下進行網路程式設計,我們可以使用linux提供的統一的套接字介面。但是這種方法牽涉到太多的結構體,比如ip位址,埠轉換等,不熟練的人往往容易犯這樣那樣的錯誤。qt中提供的socket完全使...