freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于qt的四路視頻監(jiān)控系統(tǒng)中客戶端的設(shè)計與實現(xiàn)(編輯修改稿)

2024-07-24 18:53 本頁面
 

【文章內(nèi)容簡介】 絡(luò)請求。socket用于描述IP地址和端口,是一個通信鏈的句柄。在Internet上的主機一般運行了多個服務(wù)軟件,同時提供幾種服務(wù)。每種服務(wù)都打開一個Socket,并綁定到一個端口上,不同的端口對應(yīng)于不同的服務(wù)。 SOCKET連接過程根據(jù)連接啟動的方式以及本地套接字要連接的目標(biāo),套接字之間的連接過程可以分為三個步驟:服務(wù)器監(jiān)聽,客戶端請求,連接確認(rèn)。   服務(wù)器監(jiān)聽:是服務(wù)器端套接字并不定位具體的客戶端套接字,而是處于等待連接的狀態(tài),實時監(jiān)控網(wǎng)絡(luò)狀態(tài)。   客戶端請求:是指由客戶端的套接字提出連接請求,要連接的目標(biāo)是服務(wù)器端的套接字。為此,客戶端的套接字必須首先描述它要連接的服務(wù)器的套接字,指出服務(wù)器端套接字的地址和端口號,然后就向服務(wù)器端套接字提出連接請求。   連接確認(rèn):是指當(dāng)服務(wù)器端套接字監(jiān)聽到或者說接收到客戶端套接字的連接請求,它就響應(yīng)客戶端套接字的請求,建立一個新的線程,把服務(wù)器端套接字的描述發(fā)給客戶端,一旦客戶端確認(rèn)了此描述,連接就建立好了。而服務(wù)器端套接字繼續(xù)處于監(jiān)聽狀態(tài),繼續(xù)接收其他客戶端套接字的連接請求。 SOCKET創(chuàng)建模型: Socket()Socket()Bind()Conect()Listen()建立連接Write()Accept()發(fā)送數(shù)據(jù)Read()Read()接收數(shù)據(jù)Close()Write()Close() Socket編程模型服務(wù)器,使用Server_Socket監(jiān)聽指定的端口,端口可以隨意指定(由于1024以下的端口通常屬于保留端口,在一些操作系統(tǒng)中不可以隨意使用,所以建議使用大于1024的端口),等待客戶連接請求,客戶連接后,會話產(chǎn)生;在完成會話后,關(guān)閉連接。 客戶端,使用Socket對網(wǎng)絡(luò)上某一個服務(wù)器的某一個端口發(fā)出連接請求,一旦連接成功,打開會話;會話完成后,關(guān)閉Socket??蛻舳瞬恍枰付ù蜷_的端口,通常臨時的、動態(tài)的分配一個1024以上的端口。 Socket接口是TCP/IP網(wǎng)絡(luò)的API,Socket接口定義了許多函數(shù)或例程,網(wǎng)絡(luò)的Socket數(shù)據(jù)傳輸是一種特殊的I/O,Socket也是一種文件描述符。Socket也具有一個類似于打開文件的函數(shù)調(diào)用Socket(),該函數(shù)返回一個整型的Socket描述符,隨后的連接建立、數(shù)據(jù)傳輸?shù)炔僮鞫际峭ㄟ^該Socket實現(xiàn)的。 SOCKET創(chuàng)建代碼客戶端Socket創(chuàng)建int open_clientsock(char * address, int port){ struct sockaddr_in servadr。 int client_handle。 /* Create a new socket */ if ((client_handle = socket (AF_INET, SOCK_STREAM, 0)) == 1) exit_fatal (Error opening socket Abort !)。 initaddr (amp。servadr,address,port)。 if (connect(client_handle,(struct sockaddr *) amp。servadr, sizeof (struct sockaddr)) == 1) exit_fatal (connect failed Abort !)。 return client_handle。}客戶端Socket關(guān)閉voidclose_sock (int sockhandle){ close (sockhandle)。}Socket接收消息Int read_sock (int sockhandle, unsigned char *buf, int length){ int byte_read = 1。 unsigned char *ptbuf =buf。 int mlength = length。 int i = 0。 do { byte_read = read (sockhandle, ptbuf,mlength)。 if (byte_read 0) { ptbuf = ptbuf+byte_read。 mlength = mlengthbyte_read。 } i++。 if(i 10000) return 1。 } while (mlength 0)。 return (mlength)。}Socket發(fā)送消息Int write_sock (int sockhandle, unsigned char *buf, int length){ int byte_send = 1。 byte_send = write (sockhandle, buf, length)。 return (length byte_send)。} UI界面四路視頻畫面顯示 Qt中用到的基本類的介紹Qt是一個1991年由奇趣科技開發(fā)的跨平臺C++圖形用戶界面應(yīng)用程序開發(fā)框架。它既可以開發(fā)GUI程式,也可用于開發(fā)非GUI程式,比如控制臺工具和服務(wù)器。Qt是面向?qū)ο笳Z言,易于擴展,并且允許組件編程。Qt擁有十分強大的類庫,擁有400多個面向?qū)ο蟮念?,它們帶有大多?shù)構(gòu)建跨平臺服務(wù)器與客戶端程序的底層基礎(chǔ)構(gòu)造函數(shù)。Qt的類庫可以分成三部分:組件(Components)、框架(Framework)、效用工具(Util.ities)。其中組件包括環(huán)境、主窗VI和相關(guān)類、標(biāo)準(zhǔn)對話框、基本窗VI部件、高級窗VI部件、組織者及幫助系統(tǒng);框架包象、模型、抽象窗VI部件、圖形和打印、拖放、窗VI部件外觀和布局管理;效用工具包括通用工具類、圖像處理、日期與時間、I/O處理和雜項。在程序設(shè)計中最常用的類包括QObject、QApplication、QWidget、QMainWindow、QI.a(chǎn)yout、QEvent等 。 客戶端UI設(shè)計通過QT 設(shè)計器,將所要用到的菜單、窗口進(jìn)行設(shè)計實現(xiàn)。Qt 設(shè)計器支持一種基于工程的程序設(shè)計方法。首先創(chuàng)建一個工程(.pro后綴的文件),有了該工程文件就可以用利用QT提供的工具qmake來生成makefiles用于編譯鏈接。菜單、(用戶界面編譯器)轉(zhuǎn)換成為C++頭文件和源文件。利用QT設(shè)計器完成的菜單、窗體設(shè)計只是個界面架構(gòu)。其完成的特定功能還需要編程實現(xiàn)。 文件中,可以通過增加新的功能函數(shù)實現(xiàn)其特有的功能。:圖 界面設(shè)計框架整個GUI 系統(tǒng)只有一個GUI進(jìn)程作為主進(jìn)程,其他非GUI進(jìn)程通過QThread在GUI進(jìn)程中創(chuàng)建新的子進(jìn)程實現(xiàn)相應(yīng)的功能。該窗口實現(xiàn)類如下所示:class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0)。 ~MainWindow()。private slots: void setting()。private: Ui::MainWindow *ui。 QAction* settingAct。 QMenu* fileMenu。 QFrame* centralFrame。 QGridLayout *gridlayout。 QVectorVideoFrame* videos。 QVectorCamThread* threads。}。本窗口進(jìn)程通過啟用線程來調(diào)用程序使得窗口顯示畫面,調(diào)用實現(xiàn)如下代
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1