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

正文內(nèi)容

串口設(shè)備遠程監(jiān)控軟件設(shè)計與實現(xiàn)(本科畢業(yè)論文)(編輯修改稿)

2025-06-30 06:42 本頁面
 

【文章內(nèi)容簡介】 靈活性和效率但是 MFC 的封裝很淺,所以效率上損失不大,靈活性還可以,雖然也有很多缺陷,但還是一個比較好的東西。 MFC 中最重要的封裝是 對 Win32 API 的封裝,因此,理解Windows Object 和 MFC Object (C++對象,一個 C++類的實例 )之間的關(guān)系是理解 MFC 的關(guān)鍵之一。所謂 Windows Object( Windows對象)是 Win32下用句柄表示的 Windows 操作系統(tǒng)對象;所謂 MFC Object (MFC 對象 )是 C++對象,是一個 C++類的實例,這里(本書范圍內(nèi)) MFC Object 是有特定含義的,指封裝 Windows Object的 C++ Object,并非指任意的 C++ Object。 MFC Object 和 Windows Object 是不一樣的,但兩者緊密聯(lián)系。 本章小結(jié) 本章主要講述了本課題在軟硬件設(shè)計方面需要的基礎(chǔ)知識,包括硬件方面串口聯(lián)網(wǎng)服務(wù)器的原理及工作模式,以及硬件架構(gòu)。軟件方面,介紹了編寫程序時所需要的 VC++軟件,及 MFC 框架。能夠為后面知識的學(xué)習(xí)提供基礎(chǔ)的幫助。 郭一君:串口設(shè)備遠程監(jiān)控軟件設(shè)計與實現(xiàn) 13 第三章 串口聯(lián)網(wǎng)服務(wù)器通訊底層 通信底層設(shè)計 串口聯(lián)網(wǎng)軟件底層以其硬件架構(gòu)為基礎(chǔ)??刂凭W(wǎng)絡(luò)的架構(gòu)采用 C/S 模式架構(gòu)。其中串口服務(wù)器運行 TCP Server 端, PC 監(jiān)控終端則設(shè)計為 TCP Client 端。每一臺連接到串口服務(wù)器上的串口設(shè)備,都具有固定的 IP及端口號。運行在 PC的 Client監(jiān)控終端,通過 Socket 與運行在串口服務(wù)器的 Server 端建立通信連接,進而控制串口設(shè)備。如下圖 51所示: 串 口 設(shè) 備 1T C P S e r v e r串 口 設(shè) 備 2串 口 設(shè) 備 n串 口 1串 口 2串 口 nT C P C l i e n t串 口 服 務(wù) 器 P C 監(jiān) 控 終 端I n t e r n e t 圖 01: 底層通信原理 連接到網(wǎng)絡(luò)中的串口服務(wù)器,需要把串口服務(wù)器設(shè)置成 TCP Server 模式。以康海時代 NC600 系列串口服務(wù)器為例,其設(shè)置步驟如下: 1) 用 IE 內(nèi)核的瀏覽器登錄串口 服務(wù)器的 IP 地址,進入設(shè)置主界面 2) 在串口配置項里面配置好響應(yīng)設(shè)備串口的波特率燈參數(shù)。 3) 在工作模式中把對應(yīng)的工作模式設(shè)置成 TCP Server 工作模式 4) 保存提交。 西安理工大學(xué)本科生畢業(yè)設(shè)計(論文) 14 MFC 中 TCP socket 編程 串口聯(lián)網(wǎng)網(wǎng)絡(luò)中,串口設(shè)備與 PC端監(jiān)控軟件的通信,主要通過 TCP socket套接字實現(xiàn)。 TCP為面向連接的一種網(wǎng)絡(luò)連接方式,能夠保證數(shù)據(jù)通信的安全性。 MFC 中對 socket 編程有很好的支持,這為物聯(lián)網(wǎng)串口設(shè)備遠程監(jiān)控提供了便利。 TCP socket 基本原理 TCP socket 采用流式套接字進行網(wǎng)絡(luò)連接。流式套接字提供沒有記錄邊界的數(shù)據(jù)流,即字節(jié)流。字節(jié)流能確保以正確的順序無重復(fù)地被送達。其主要的編程模型如下: 創(chuàng) 建 并 初 始化 套 接 字監(jiān) 聽 來 自 客戶 端 的 請 求接 受 連 接 請求接 收 數(shù) 據(jù)發(fā) 送 數(shù) 據(jù)關(guān) 閉 連 接請 求 建 立 連接發(fā) 送 數(shù) 據(jù)接 收 數(shù) 據(jù)關(guān) 閉 連 接創(chuàng) 建 并 初 始化 套 接 字服 務(wù) 器 客 戶 機 圖 02: 流式套接字編程模型 郭一君:串口設(shè)備遠程監(jiān)控軟件設(shè)計與實現(xiàn) 15 在該模型中,服務(wù)器端創(chuàng)建并初始化套接字,監(jiān)聽來自客戶端的連接請求??蛻舳送瑯咏⑻捉幼?, 用于向服務(wù)器端發(fā)起連接請求。當(dāng)服務(wù)器接收到來自客戶機的連接請求后,與客戶機建立連接。連接成功后,則服務(wù)器和客戶機可以 進行數(shù)據(jù)收發(fā)通信。通信完成后,服務(wù)器和客戶機關(guān)閉套接字。 基本 Windows Socket API Windows 操作系統(tǒng)提供了很多用于 Socket 通信的 API,可以很方便地開發(fā) Socket 通信軟件。主要的 API 函數(shù)如下: 1) WSAStartup 調(diào)用 windows Socket DLL 函數(shù)原型 int WSAStartup( WORD wVersionRequested, // 應(yīng)用程序要求的 sockets 版本 LPWSADATA lpWSAData //指向數(shù)據(jù)結(jié)構(gòu) WSDATA 的指針, //得到 windows Socket 的具體信息) ; WSDATA 定義如下: typedef struct WSAData { WORD wVersion。 WORD wHighVersion。 ifdef _WIN64 unsigned short iMaxSockets。 unsigned short iMaxUdpDg。 char FAR * lpVendorInfo。 char szDescription[WSADESCRIPTION_LEN+1]。 西安理工大學(xué)本科生畢業(yè)設(shè)計(論文) 16 char szSystemStatus[WSASYS_STATUS_LEN+1]。 else char szDescription[WSADESCRIPTION_LEN+1]。 char szSystemStatus[WSASYS_STATUS_LEN+1]。 unsigned short iMaxSockets。 unsigned short iMaxUdpDg。 char FAR * lpVendorInfo。 endif } WSADATA, FAR * LPWSADATA。 2) WSACleanup 結(jié)束對 Windows Sockets DLL 的調(diào)用 函數(shù)原型: int WSACleanup(void)。 3)socket 用于建立 Sockets。 函數(shù)原型: SOCKET socket( int af, // 地址族,一般是 AF_INET int type , //socket 類型, SOCK_STREAM 或 SOCK_DGRAM int protocol //協(xié)議類型,通常取值 0)。 4) closesocket 關(guān)閉套接字 函數(shù)原型: int closesocket( SOCKET s //要關(guān)閉的套接字 )。 5) bind 將一個本地地址和一個 SOCKET 描述字連接 郭一君:串口設(shè)備遠程監(jiān)控軟件設(shè)計與實現(xiàn) 17 起來 函數(shù)原型: int bind( SOCKET s, // 要綁定的套接字 const struct sockaddr FAR* name, // 指向 SOCKADDR 結(jié)構(gòu)的地址 int namelen // 地址結(jié)構(gòu)的 sizeof) Tcp/ip SOCKADDR 的結(jié)構(gòu)為 struct sockaddr{ unsigned short sa_family。 char sa_data[4]。}。 struct sockaddr_in{ short sin_family。 unsigned short sin_port。 struct in_addr sin_addr。 char sin_zero[8]。}。 6)listen 設(shè)定 socket 為監(jiān)聽狀態(tài) 函數(shù)原型: int listen( SOCKET s, // 進行監(jiān)聽的 socket int backlog // 客戶端可以連接的請求個數(shù) )。 7) accept 接受一個 socket 的連接請求, 同時返回一個新的 socket ,新的 socket 用來在服務(wù) 西安理工大學(xué)本科生畢業(yè)設(shè)計(論文) 18 器與客戶端之間傳遞和接收信息。 函數(shù)原型: SOCKET accept( SOCKET s, // 處于監(jiān)聽狀態(tài)的 socket struct sockaddr FAR* addr, //將要接受地址的 sockaddr 指針 int FAR* addrlen //地址的長度 )。 8)connect 連接客戶端的 socket 到指定的網(wǎng)絡(luò)服務(wù)器。連接成功后,客戶端用此 socket 與服 務(wù)器通信。 函數(shù)原型: int connect( SOCKET s, // 將要連接的 socket const struct sockaddr FAR* name, // 目標 socket 地址 int namelen // 地址結(jié)構(gòu) sizeof )。 9)recv 用于接收已經(jīng)建立連接的 socket 數(shù)據(jù)信息 函數(shù)原型: int recv( SOCKET s, char FAR* buf, //接收數(shù)據(jù)緩沖區(qū) int len ,// 緩沖區(qū)長度 郭一君:串口設(shè)備遠程監(jiān)控軟件設(shè)計與實現(xiàn) 19 int flags //有 MSG_PEEK 和 MSG_OOB )。 返回值:接收到的字節(jié)數(shù) 10) send 對已經(jīng)建立連接的 socket 發(fā)送數(shù)據(jù)信息 函數(shù)原型: int send( SOCKET s, char FAR* buf, //發(fā)送數(shù)據(jù)緩沖區(qū) int len ,// 緩沖區(qū)長度 int flags //有 MSG_PEEK 和 MSG_OOB )。 返回值:發(fā)送的字節(jié)數(shù) 11 ) WSAAsyncSelect 要求 socket 在有事件發(fā)生時通知使用者,本函數(shù)將套接口設(shè)置成為非 阻塞方式。 函數(shù)原型: int WSAAsyncSelect( SOCKET s, HWND hWnd, //接收網(wǎng)絡(luò)事件的窗口句柄 unsigned int wMsg,//發(fā)送給窗口的網(wǎng)絡(luò)事件消息 long lEvent //網(wǎng)絡(luò)消息 )。 12) sendto 向目標地址發(fā)送數(shù)據(jù)信息 函數(shù)原型: 西安理工大學(xué)本科生畢業(yè)設(shè)計(論文) 20 int sendto( SOCKET s, const char FAR * buf, int len, int flags, const struct sockaddr FAR * to, int tolen )。 13)recvfrom 接收目標地址傳來的數(shù)據(jù)信息 函數(shù)原型: int recvfrom( IN SOCKET s, OUT char FAR * buf, IN int len, IN int flags, OUT struct sockaddr FAR * from, IN OUT int FAR * fromlen )。 MFC下的 Socket 編程類 MFC 提 供 了 兩 個 類 用 以 支 持 套 接 字 編 程 , 它 們 是 CAsyncSocket 類和 CSocket 類。 1) CAsyncSocket 類 郭一君:串口設(shè)備遠程監(jiān)控軟件設(shè)計與實現(xiàn) 21 CAsyncSocket 類一對一地封裝 Windows Socket API 。CAsyncSocket 類適合哪些對網(wǎng)絡(luò)通信細節(jié)很了解, 但希望利用回調(diào)的便利通知網(wǎng)絡(luò)事件的程序員使用。 如果想利用 Windows Sockets 方便地處理 MFC 應(yīng)用程序中的多個網(wǎng)絡(luò)協(xié)議, 而又不想放棄靈活性, 可以考慮使用 CAsyncSocket 。 CAsyncSocket 類是 MFC 在方便性與靈活性中的一種折衷方案。 它提供了一個類用以保留網(wǎng)絡(luò)編程的靈活性,而方便性則由CSocket 類來提供。 2) CSocket 類 CSocket 類是 CAsyncSocket 類的派生類, 它致力于提供比 CAsyncSocket 類更高的抽象性,使得網(wǎng)絡(luò)編程變得簡單方便。CSocket 類支持流方式和數(shù)據(jù)報方式,但一般情況下用的更多的是流方式的數(shù)據(jù)通信。在流方式的通信模式下, CSocket 類通常會與 CArchive 類結(jié)合, 以串行化的方式發(fā)送和接收數(shù)據(jù),這使得網(wǎng)絡(luò)編程變得像讀寫文件一樣簡單了。 CArchive 類扮演的是一個數(shù)據(jù)緩 沖區(qū)的角色,它通過 CSocketFile 類與一個套接字相聯(lián)系。只要建立了兩者的聯(lián)系,然后往“數(shù)據(jù)緩沖區(qū)”裝入數(shù)據(jù)與取出數(shù)據(jù)就完成了。 MFC 下 Socket編程基本步驟 sockets(套接字)編程有三種,流式套接字( SOCK_STREAM),數(shù)據(jù)報套接字( SOCK_DGRAM),原始套接字( SOCK_RAW);基于 TCP的 socket 編程是采用的流式套接字。流式套接字
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1