多執行緒網路時間伺服器

2021-08-17 02:17:13 字數 4261 閱讀 7263

[cpp]view plain

copy

/*** 書本:【qt5開發及例項】

* 功能:多執行緒網路時間伺服器

* 檔案:dialog.h

*/#ifndef dialog_h

#define dialog_h

#include 

#include 

#include 

class

timeserver;  

class

dialog : 

public

qdialog  

;  #endif // dialog_h

[cpp]view plain

copy

/*** 書本:【qt5開發及例項】

* 功能:多執行緒網路時間伺服器

* 檔案:dialog.cpp

*/#include "dialog.h"

#include "timeserver.h"

#include 

#include 

#include 

dialog::dialog(qwidget *parent)  

: qdialog(parent)  

//監聽成功,輸出有動靜的埠號

label1->settext(tr("伺服器端口:   %1"

).arg(timeserver->serverport()));  

}  //void slotshow();    //執行緒在介面的顯示,執行緒結束的時候呼叫

void

dialog::slotshow()  

dialog::~dialog()  

[cpp]view plain

copy

/*** 書本:【qt5開發及例項】

* 功能:多執行緒網路時間伺服器

* 檔案:timeserver.h

*/#ifndef timeserver_h

#define timeserver_h

#include 

class

dialog;  

class

timeserver : 

public

qtcpserver  

;  #endif // timeserver_h

[cpp]view plain

copy

/*** 書本:【qt5開發及例項】

* 功能:多執行緒網路時間伺服器

* 檔案:timeserver.cpp

*/#include "timeserver.h"

#include "timethread.h"

#include "dialog.h"

timeserver::timeserver(qobject *parent) :  

qtcpserver(parent)  

//void incomingconnection(int socketdescriptor);    //當tcp有新的連線的時候呼叫,其引數為所接收新連線的套接字描述符

void

timeserver::incomingconnection(

intsocketdescriptor)  

[cpp]view plain

copy

/*** 書本:【qt5開發及例項】

* 功能:多執行緒網路時間伺服器

* 檔案:timethread.h

*/#ifndef timethread_h

#define timethread_h

#include 

#include 

#include 

class

timethread : 

public

qthread  

;  #endif // timethread_h

[cpp]view plain

copy

/*** 書本:【qt5開發及例項】

* 功能:多執行緒網路時間伺服器

* 檔案:timethread.cpp

*/#include "timethread.h"

#include //時間

#include //協議傳輸的位元組流

#include //資料流

timethread::timethread(int

socketdescriptor, qobject *parent) :  

qthread(parent), socketdescriptor(socketdescriptor)     //初始化

void

timethread::run()    

//執行緒執行開始的函式

qbytearray block;   //位元組陣列,這個block應該是乙個指向第乙個位置的指標

qdatastream out(&block, qiodevice::writeonly);    //資料流,資料流操作block,這裡block指標??

out.setversion(qdatastream::qt_5_3);    //版本= =

uint time2u = qdatetime::currentdatetime().totime_t();    //得到系統的時間,並傳換成時間的格式

outtcpsocket.write(block);   //把位元組流寫到協議埠

tcpsocket.disconnectfromhost();   //斷開埠連線

tcpsocket.waitfordisconnected();    //預設時間,等待客戶端返回資訊

}[cpp]view plain

copy

/*** 書本:【qt5開發及例項】

* 功能:多執行緒網路時間伺服器

* 檔案:timeclient.h

*/#ifndef timeclient_h

#define timeclient_h

#include 

#include 

#include 

#include 

#include 

#include 

#include 

class

timeclient : 

public

qdialog  

;  #endif // timeclient_h

[cpp]view plain

copy

/*** 書本:【qt5開發及例項】

* 功能:多執行緒網路時間伺服器

* 檔案:timeclient.cpp

*/#include "timeclient.h"

#include 

#include 

#include 

#include 

#include 

timeclient::timeclient(qwidget *parent)  

: qdialog(parent)  

//void enablegetbtn();    //按鈕的控制

void

timeclient::enablegetbtn()  

//void gettime();   //準備得到時間

void

timeclient::gettime()  

//void readtime();    //讀取時間過來

void

timeclient::readtime()  

//不為零,那麼就繼續用

datetimeedit->setdatetime(qdatetime::fromtime_t(time2u));  

//按鈕設定為可以按

getbtn->setenabled(true

);  

}  //void showerror(qabstractsocket::socketerror socketerror);   //出錯

void

timeclient::showerror(qabstractsocket::socketerror socketerror)  

getbtn->setenabled(true

);  

}  timeclient::~timeclient()  

多執行緒時間伺服器

include stdafx.h include include include include include define port 8080 int x 1 void error char str dword winapi new client proc lpvoid lpparam prin...

多執行緒伺服器

posix執行緒庫 a 與執行緒有關的函式都構成了乙個完整的系列,絕大多數函式的名字都是以 pthread 打頭的。b 要使用這些庫函式,要引入標頭檔案。c 鏈結這些執行緒庫函式時要使用編譯命令的 lpthread 選項。int pthread create pthread t thread,con...

ACE多執行緒伺服器

ace adaptive communication environment 它是乙個物件導向的 跨平台的 開放原始碼的網路程式設計基礎設施框架。ace 是由加利福尼亞大學irvine分校的douglas c.schmidt 博士主導開發的,是一種跨平台可編譯的網路程式設計api,並隨後在工業界中發...