版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
MFC網(wǎng)絡(luò)編程及無(wú)線組網(wǎng)
2024/11/11219.1網(wǎng)絡(luò)編程基本概念1.網(wǎng)絡(luò)字節(jié)序2.套接字的類型3.套接字的初始化WinsockWinsock是Windows下網(wǎng)絡(luò)編程的規(guī)范-WindowsSockets是Windows下得到廣泛應(yīng)用的、開放的、支持多種協(xié)議的網(wǎng)絡(luò)編程接口。在Windows平臺(tái)下,一般使用Winsock進(jìn)行網(wǎng)絡(luò)編程,其初始化函數(shù)如下:
2024/11/112024/11/11319.2Winsock基礎(chǔ)19.2.1WinsockAPISocket接口是網(wǎng)絡(luò)編程(通常是TCP/IP協(xié)議,也可以是其他協(xié)議)的API。最早的Socket接口是Berkeley接口,在Unxi操作系統(tǒng)中實(shí)現(xiàn)。WinSock也是一個(gè)基于Socket模型的API,在MicrosoftWindows操作系統(tǒng)類中使用。它在Berkeley接口函數(shù)的基礎(chǔ)之上,還增加了基于消息驅(qū)動(dòng)機(jī)制的Windows擴(kuò)展函數(shù)。Winscok1.1只支持TCP/IP網(wǎng)絡(luò),WinSock2.0增加了對(duì)更多協(xié)議的支持。這里,討論TCP/IP網(wǎng)絡(luò)上的API。2024/11/112024/11/11419.2.2Winsock的使用WinSock以DLL的形式提供,在調(diào)用任何WinSockAPI之前,必須調(diào)用函數(shù)WSAStartup進(jìn)行初始化,最后,調(diào)用函數(shù)WSACleanUp作清理工作。MFC使用函數(shù)AfxSocketInit包裝了函數(shù)WSAStartup,在WinSock應(yīng)用程序的初始化函數(shù)IninInstance中調(diào)用AfxSocketInit進(jìn)行初始化。程序不必調(diào)用WSACleanUp。2024/11/112024/11/115MFC對(duì)WinSocktAPI的封裝MFC提供了兩個(gè)類CAsyncSocket和CSocket來(lái)封裝WinSockAPI,這給程序員提供了一個(gè)更簡(jiǎn)單的網(wǎng)絡(luò)編程接口。CAsyncSocket在較低層次上封裝了WinSockAPI,缺省情況下,使用該類創(chuàng)建的socket是非阻塞的socket,所有操作都會(huì)立即返回,如果沒有得到結(jié)果,返回WSAEWOULDBLOCK,表示是一個(gè)阻塞操作。2024/11/112024/11/116
CAsyncSocketCAsyncSocket封裝了低層的WinSockAPI,其成員變量m_hSocket保存其對(duì)應(yīng)的socket句柄。使用CAsyncSocket的方法如下:首先,在堆或者棧中構(gòu)造一個(gè)CAsyncSocket對(duì)象,例如:CAsyncSocketsock;或者CAsyncSocket*pSock=newCAsyncSocket;其次,調(diào)用Create創(chuàng)建socket,例如:2024/11/112024/11/117
2.socket對(duì)象的創(chuàng)建和捆綁Create函數(shù)首先,討論Create函數(shù),分析socket句柄如何被創(chuàng)建并和CAsyncSocket對(duì)象關(guān)聯(lián)。Create的實(shí)現(xiàn)如下:2024/11/112024/11/118
Create函數(shù)首先,討論Create函數(shù),分析socket句柄如何被創(chuàng)建并和CAsyncSocket對(duì)象關(guān)聯(lián)。Create的實(shí)現(xiàn)如下:捆綁(Attatch)捆綁過(guò)程類似于其他Windows對(duì)象,將在模塊線程狀態(tài)的WinSock映射中添加一對(duì)新的映射:this所指對(duì)象和新創(chuàng)建的socket對(duì)象的映射。2024/11/112024/11/119指定要監(jiān)測(cè)的網(wǎng)絡(luò)事件在捆綁完成之后,調(diào)用AsyncSelect指定新創(chuàng)建的socket將監(jiān)測(cè)的網(wǎng)絡(luò)事件。AsyncSelect實(shí)現(xiàn)如下:2024/11/112024/11/1110首先,調(diào)用socket函數(shù)創(chuàng)建一個(gè)socket;然后把創(chuàng)建的socket對(duì)象映射到CAsyncSocket對(duì)象(捆綁在一起),指定本socket要通知的網(wǎng)絡(luò)事件,并創(chuàng)建一個(gè)“socket窗口”來(lái)接收網(wǎng)絡(luò)事件消息,最后,指定socket的本地信息。下一步,是使用成員函數(shù)Connect連接遠(yuǎn)地主機(jī),配置socket的遠(yuǎn)地信息。函數(shù)Connect類似于Bind,把指定的遠(yuǎn)地地址轉(zhuǎn)換成SOCKADDR_IN對(duì)象表示的地址信息(包括網(wǎng)絡(luò)字節(jié)序的轉(zhuǎn)換),然后調(diào)用WinSock函數(shù)Connect連接遠(yuǎn)地主機(jī),配置socket的遠(yuǎn)地端口和遠(yuǎn)地IP地址。2024/11/112024/11/1111.CSocket如果希望在用戶界面線程中使用阻塞socket,則可以使用CSocket。它在非阻塞socket基礎(chǔ)之上實(shí)現(xiàn)了阻塞操作,在阻塞期間實(shí)現(xiàn)了消息循環(huán)。對(duì)于CSocket,處理網(wǎng)絡(luò)事件通知的函數(shù)OnAccept、OnClose、OnReceive仍然可以使用,OnConnect、OnSend在CSocket中永遠(yuǎn)不會(huì)被調(diào)用,另外OnOutOfBandData在CSocket中不鼓勵(lì)使用。2024/11/112024/11/111219.3MFC網(wǎng)絡(luò)編程示例19.3.1基于TCP的網(wǎng)絡(luò)編程示例本示例使用tcp協(xié)議進(jìn)行網(wǎng)絡(luò)編程,示例代碼保存在目錄Eg19_1中。19.3.2基于UDP的網(wǎng)絡(luò)編程示例本示例代碼保存在目錄Eg19_2中。2024/11/112024/11/111319.4使用json傳輸數(shù)據(jù)上一章中講解了如何在Android平臺(tái)下使用json進(jìn)行傳輸數(shù)據(jù)的方法,json雖然是一種通用的網(wǎng)絡(luò)傳輸數(shù)據(jù)格式,但是在不同平臺(tái)下卻有不同的實(shí)現(xiàn),也就是說(shuō),不同平臺(tái)下使用的json解析庫(kù)是不一樣的,下面就來(lái)講解在MFC平臺(tái)下使用json傳輸數(shù)據(jù)的相關(guān)知識(shí)。1.下載和編譯:下載地址是:/projects/jsoncpp/2.jsoncpp的用法
2024/11/112024/11/111419.5無(wú)線組網(wǎng)通常在進(jìn)行socket網(wǎng)絡(luò)編程的時(shí)候,客戶端需要指定服務(wù)器的IP地址才能進(jìn)行socket的創(chuàng)建以及后續(xù)的數(shù)據(jù)通信,在通常的實(shí)驗(yàn)中,一般會(huì)使用作為服務(wù)器的IP地址,即服務(wù)器和客戶端運(yùn)行在同一臺(tái)計(jì)算機(jī)上,這樣可以減少實(shí)驗(yàn)的成本。但是在實(shí)際的產(chǎn)品運(yùn)行時(shí),服務(wù)器往往需要租用或者自行搭建,即服務(wù)器和客戶端運(yùn)行在不同的計(jì)算機(jī)系統(tǒng)上。為無(wú)線局域網(wǎng)內(nèi)的計(jì)算機(jī)配置固定IP的方法如下:1).查看計(jì)算機(jī)MAC地址2).登陸路由器打開瀏覽器,在地址欄上輸入,如圖19.8所示:3).選擇左邊菜單的DHCP服務(wù)器|靜態(tài)地址分配,如圖19.10所示:4).進(jìn)入靜態(tài)地址分配主界面,如圖19.11所示:左邊菜單的DHCP服務(wù)器|靜態(tài)地址分配,如圖19.10所示:5)點(diǎn)擊增加新條目,進(jìn)入增加新條目界面,輸入步驟一中查詢到的MAC地址,并設(shè)置一個(gè)IP地址(IP地址可以任意設(shè)定,如00等),狀態(tài)選擇生效,點(diǎn)擊保存,如圖19.12所示:.根據(jù)提示,點(diǎn)擊重啟路由器,完成固定IP的設(shè)置。至此,一個(gè)無(wú)線局域網(wǎng)服務(wù)器環(huán)境已經(jīng)搭建成功,智能手機(jī)上的Android客戶端可以通過(guò)設(shè)定好的固定IP來(lái)訪問局域網(wǎng)內(nèi)的服務(wù)器,并進(jìn)行
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024至2030年防腐噴涂項(xiàng)目投資價(jià)值分析報(bào)告
- 2024至2030年葡萄籽素軟膠囊項(xiàng)目投資價(jià)值分析報(bào)告
- 2024至2030年竹名片盒項(xiàng)目投資價(jià)值分析報(bào)告
- 2024至2030年保鮮板臺(tái)項(xiàng)目投資價(jià)值分析報(bào)告
- 2024年防護(hù)耳塞項(xiàng)目可行性研究報(bào)告
- 2024年臂型進(jìn)料器項(xiàng)目可行性研究報(bào)告
- 藝術(shù)展覽場(chǎng)地租賃協(xié)議
- 2022軍訓(xùn)參考心得體會(huì)高一學(xué)生5篇
- 無(wú)故曠工檢討書內(nèi)容15篇
- Unit 1 Let's be friends - pronunciation activity 1 - activity 3 alphabet A - Z 說(shuō)課稿 2024-2025學(xué)年仁愛科普版(2024)七年級(jí)英語(yǔ)上冊(cè)
- 北京市第一O一中學(xué)2024-2025學(xué)年八年級(jí)上學(xué)期期中語(yǔ)文試題(含答案)
- 天一大聯(lián)考2025屆物理高一上期中質(zhì)量檢測(cè)模擬試題含解析
- 心理健康教育教師自我分析及申請(qǐng)理由
- 中低產(chǎn)田類型劃分及改良技術(shù)規(guī)范
- 2024-2030年再生醫(yī)學(xué)市場(chǎng)發(fā)展行情監(jiān)測(cè)及前景運(yùn)營(yíng)態(tài)勢(shì)趨向研判研究報(bào)告
- 用戶運(yùn)營(yíng)指南
- 2020年山東煙臺(tái)中考滿分作文《就這樣被打動(dòng)》9
- 國(guó)網(wǎng)員工合同模板
- 建設(shè)2臺(tái)66000KVA全封閉低碳硅錳礦熱爐項(xiàng)目竣工環(huán)保驗(yàn)收監(jiān)測(cè)調(diào)查報(bào)告
- 期中核心素質(zhì)卷(試題)-2024-2025學(xué)年數(shù)學(xué)六年級(jí)上冊(cè)北師大版
- 《Photoshop圖像處理》5.《濾鏡特效技巧的學(xué)習(xí)》試卷
評(píng)論
0/150
提交評(píng)論