Visual C++程序設計教程(第二版)課件:MFC網(wǎng)絡編程及無線組網(wǎng)_第1頁
Visual C++程序設計教程(第二版)課件:MFC網(wǎng)絡編程及無線組網(wǎng)_第2頁
Visual C++程序設計教程(第二版)課件:MFC網(wǎng)絡編程及無線組網(wǎng)_第3頁
Visual C++程序設計教程(第二版)課件:MFC網(wǎng)絡編程及無線組網(wǎng)_第4頁
Visual C++程序設計教程(第二版)課件:MFC網(wǎng)絡編程及無線組網(wǎng)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

MFC網(wǎng)絡編程及無線組網(wǎng)

2024/11/11219.1網(wǎng)絡編程基本概念1.網(wǎng)絡字節(jié)序2.套接字的類型3.套接字的初始化WinsockWinsock是Windows下網(wǎng)絡編程的規(guī)范-WindowsSockets是Windows下得到廣泛應用的、開放的、支持多種協(xié)議的網(wǎng)絡編程接口。在Windows平臺下,一般使用Winsock進行網(wǎng)絡編程,其初始化函數(shù)如下:

2024/11/112024/11/11319.2Winsock基礎19.2.1WinsockAPISocket接口是網(wǎng)絡編程(通常是TCP/IP協(xié)議,也可以是其他協(xié)議)的API。最早的Socket接口是Berkeley接口,在Unxi操作系統(tǒng)中實現(xiàn)。WinSock也是一個基于Socket模型的API,在MicrosoftWindows操作系統(tǒng)類中使用。它在Berkeley接口函數(shù)的基礎之上,還增加了基于消息驅動機制的Windows擴展函數(shù)。Winscok1.1只支持TCP/IP網(wǎng)絡,WinSock2.0增加了對更多協(xié)議的支持。這里,討論TCP/IP網(wǎng)絡上的API。2024/11/112024/11/11419.2.2Winsock的使用WinSock以DLL的形式提供,在調用任何WinSockAPI之前,必須調用函數(shù)WSAStartup進行初始化,最后,調用函數(shù)WSACleanUp作清理工作。MFC使用函數(shù)AfxSocketInit包裝了函數(shù)WSAStartup,在WinSock應用程序的初始化函數(shù)IninInstance中調用AfxSocketInit進行初始化。程序不必調用WSACleanUp。2024/11/112024/11/115MFC對WinSocktAPI的封裝MFC提供了兩個類CAsyncSocket和CSocket來封裝WinSockAPI,這給程序員提供了一個更簡單的網(wǎng)絡編程接口。CAsyncSocket在較低層次上封裝了WinSockAPI,缺省情況下,使用該類創(chuàng)建的socket是非阻塞的socket,所有操作都會立即返回,如果沒有得到結果,返回WSAEWOULDBLOCK,表示是一個阻塞操作。2024/11/112024/11/116

CAsyncSocketCAsyncSocket封裝了低層的WinSockAPI,其成員變量m_hSocket保存其對應的socket句柄。使用CAsyncSocket的方法如下:首先,在堆或者棧中構造一個CAsyncSocket對象,例如:CAsyncSocketsock;或者CAsyncSocket*pSock=newCAsyncSocket;其次,調用Create創(chuàng)建socket,例如:2024/11/112024/11/117

2.socket對象的創(chuàng)建和捆綁Create函數(shù)首先,討論Create函數(shù),分析socket句柄如何被創(chuàng)建并和CAsyncSocket對象關聯(lián)。Create的實現(xiàn)如下:2024/11/112024/11/118

Create函數(shù)首先,討論Create函數(shù),分析socket句柄如何被創(chuàng)建并和CAsyncSocket對象關聯(lián)。Create的實現(xiàn)如下:捆綁(Attatch)捆綁過程類似于其他Windows對象,將在模塊線程狀態(tài)的WinSock映射中添加一對新的映射:this所指對象和新創(chuàng)建的socket對象的映射。2024/11/112024/11/119指定要監(jiān)測的網(wǎng)絡事件在捆綁完成之后,調用AsyncSelect指定新創(chuàng)建的socket將監(jiān)測的網(wǎng)絡事件。AsyncSelect實現(xiàn)如下:2024/11/112024/11/1110首先,調用socket函數(shù)創(chuàng)建一個socket;然后把創(chuàng)建的socket對象映射到CAsyncSocket對象(捆綁在一起),指定本socket要通知的網(wǎng)絡事件,并創(chuàng)建一個“socket窗口”來接收網(wǎng)絡事件消息,最后,指定socket的本地信息。下一步,是使用成員函數(shù)Connect連接遠地主機,配置socket的遠地信息。函數(shù)Connect類似于Bind,把指定的遠地地址轉換成SOCKADDR_IN對象表示的地址信息(包括網(wǎng)絡字節(jié)序的轉換),然后調用WinSock函數(shù)Connect連接遠地主機,配置socket的遠地端口和遠地IP地址。2024/11/112024/11/1111.CSocket如果希望在用戶界面線程中使用阻塞socket,則可以使用CSocket。它在非阻塞socket基礎之上實現(xiàn)了阻塞操作,在阻塞期間實現(xiàn)了消息循環(huán)。對于CSocket,處理網(wǎng)絡事件通知的函數(shù)OnAccept、OnClose、OnReceive仍然可以使用,OnConnect、OnSend在CSocket中永遠不會被調用,另外OnOutOfBandData在CSocket中不鼓勵使用。2024/11/112024/11/111219.3MFC網(wǎng)絡編程示例19.3.1基于TCP的網(wǎng)絡編程示例本示例使用tcp協(xié)議進行網(wǎng)絡編程,示例代碼保存在目錄Eg19_1中。19.3.2基于UDP的網(wǎng)絡編程示例本示例代碼保存在目錄Eg19_2中。2024/11/112024/11/111319.4使用json傳輸數(shù)據(jù)上一章中講解了如何在Android平臺下使用json進行傳輸數(shù)據(jù)的方法,json雖然是一種通用的網(wǎng)絡傳輸數(shù)據(jù)格式,但是在不同平臺下卻有不同的實現(xiàn),也就是說,不同平臺下使用的json解析庫是不一樣的,下面就來講解在MFC平臺下使用json傳輸數(shù)據(jù)的相關知識。1.下載和編譯:下載地址是:/projects/jsoncpp/2.jsoncpp的用法

2024/11/112024/11/111419.5無線組網(wǎng)通常在進行socket網(wǎng)絡編程的時候,客戶端需要指定服務器的IP地址才能進行socket的創(chuàng)建以及后續(xù)的數(shù)據(jù)通信,在通常的實驗中,一般會使用作為服務器的IP地址,即服務器和客戶端運行在同一臺計算機上,這樣可以減少實驗的成本。但是在實際的產(chǎn)品運行時,服務器往往需要租用或者自行搭建,即服務器和客戶端運行在不同的計算機系統(tǒng)上。為無線局域網(wǎng)內的計算機配置固定IP的方法如下:1).查看計算機MAC地址2).登陸路由器打開瀏覽器,在地址欄上輸入,如圖19.8所示:3).選擇左邊菜單的DHCP服務器|靜態(tài)地址分配,如圖19.10所示:4).進入靜態(tài)地址分配主界面,如圖19.11所示:左邊菜單的DHCP服務器|靜態(tài)地址分配,如圖19.10所示:5)點擊增加新條目,進入增加新條目界面,輸入步驟一中查詢到的MAC地址,并設置一個IP地址(IP地址可以任意設定,如00等),狀態(tài)選擇生效,點擊保存,如圖19.12所示:.根據(jù)提示,點擊重啟路由器,完成固定IP的設置。至此,一個無線局域網(wǎng)服務器環(huán)境已經(jīng)搭建成功,智能手機上的Android客戶端可以通過設定好的固定IP來訪問局域網(wǎng)內的服務器,并進行

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論