版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、實驗九無線網(wǎng)絡通信實驗實驗目的1掌握Socket編程方法;2、掌握WinCE無線網(wǎng)絡的配置過程;3、了解TCP/IP協(xié)議4、熟悉EVC和VS.Net的開發(fā)環(huán)境;實驗儀器1 裝有Platform Builder、EVC和VS.Net開發(fā)平臺的 PC機一臺2、XSBase270實驗開發(fā)平臺一套3、SL-2511 CF無線網(wǎng)卡一塊4、無線AP 一套實驗原理1、軟件原理1.1 服務器端操作socket (套接字)(1)在初始化階段調用 WSAStartup()此函數(shù)在應用程序中初始化Win dows Sockets DLL ,只有此函數(shù)調用成功后,應用程序才可以再調用其他 Windows Socket
2、s DLL 中的API函數(shù)。(2)建立 Socket初始化 Win Sock的動態(tài)連接庫后,需要在服務器端建立一個監(jiān)聽的Socket,為此可以調用Socket()函數(shù)用來建立這個監(jiān)聽的 Socket,并定義此Socket所使用的通信協(xié)議。此函 數(shù)調用成功返回 Socket對象,失敗則返回INVALID_SOCKET調用 WSAGetLastError()可得知 原因,所有Win Socket的函數(shù)都可以使用這個函數(shù)來獲取失敗的原因)。SOCKET PASCAL FAR socket( int af, int type, int protocol )參數(shù):af:目前只提供 PF_INET(AF_
3、INET);type : Socket 的類型(SOCK_STREAM SOCK_DGRA;)protocol :通訊協(xié)定(如果使用者不指定則設為0);如果要建立的是遵從 TCP/IP協(xié)議的socket,第二個參數(shù)type應為SOCK_STREAM為UDP (數(shù)據(jù)報)的 socket,應為 SOCK_DGRAM(3 )綁定端口接下來要為服務器端定義的這個監(jiān)聽的Socket指定一個地址及端口( Port ),這樣客戶端才知道待會要連接哪一個地址的哪個端口,為此我們要調用bind()函數(shù),該函數(shù)調用成功返回0,否則返回SOCKET_ERRORint PASCAL FAR bi nd( SOCKET
4、 s, const struct sockaddr FAR *n ame,i nt n amele n ); 參數(shù):s : Socket對象名;name: Socket的地址值,這個地址必須是執(zhí)行這個程式所在機器的IP地址;namelen : name 的長度;如果使用者不在意地址或端口的值,那么可以設定地址為INADDR_ANY及Port為0,Windows Sockets會自動將其設定適當之地址及 Port (1024到5000之間的值)。此后可以 調用getsockname()函數(shù)來獲知其被設定的值。(4) 監(jiān)聽當服務器端的 Socket對象綁定完成之后,服務器端必須建立一個監(jiān)聽的隊列來
5、接收客 戶端的連接請求。listen()函數(shù)使服務器端的 Socket進入監(jiān)聽狀態(tài),并設定可以建立的最大連接數(shù)(目前最大值限制為5,最小值為1)。該函數(shù)調用成功返回0,否則返回SOCKET_ERRORint PASCAL FAR liste n( SOCKET s, i nt backlog );參數(shù):s :需要建立監(jiān)聽的 Socket ;backlog :最大連接個數(shù);服務器端的Socket調用完listen()后,如果此時客戶端調用connect ()函數(shù)提出連接申請的話,Server端必須再調用accept()函數(shù),這樣服務器端和客戶端才算正式完成通信程序的連接動作。(5) 服務器端接受
6、客戶端的連接請求當Clie nt提出連接請求時,Server端hwnd視窗會收到 Win sock Stack 送來我們自定義的一個消息,這時,我們可以分析lParam,然后調用相關的函數(shù)來處理此事件。為了使服務器端接受客戶端的連接請求,就要使用accept()函數(shù),該函數(shù)新建一Socket與客戶端的Socket相通,原先監(jiān)聽之Socket繼續(xù)進入監(jiān)聽狀態(tài), 等待他人的連接要求。該函數(shù)調用成功返回一個新產(chǎn)生的Socket對象,否則返回INVALID_SOCKETSOCKET PASCAL FAR accept( SCOKET s, struct sockaddr FAR *addr,i nt
7、FAR *addrlen ); 參數(shù):s: Socket的識別碼;addr :存放來連接的客戶端的地址;addrlen : addr 的長度(6) 結束socket 連接結束服務器和客戶端的通信連接是很簡單的,這一過程可以由服務器或客戶機的任一端啟動,只要調用 closesocket() 就可以了,而要關閉 Server端監(jiān)聽狀態(tài)的socket,同樣也 是利用此函數(shù)。另外,與程序啟動時調用WSAStartup()憨數(shù)相對應,程式結束前,需要調用WSAClea nup()來通知 Win sock Stack 釋放Socket所占用的資源。這兩個函數(shù)都是調用 成功返回0,否則返回SOCKET_ER
8、RORint PASCAL FAR closesocket( SOCKET s );參數(shù):s: Socket的識別碼;int PASCAL FAR WSAClea nup( void );參數(shù): 無1.2 客戶端Socket的操作(1)建立客戶端的 Socket客戶端應用程序首先也是調用WSAStartup()函數(shù)來與Win sock的動態(tài)連接庫建立關系,然后同樣調用socket()來建立一個TCP或UDP socket (相同協(xié)定的sockets 才能相通,TCP對TCP,UDP對UDP)。與服務器端的socket不同的是,客戶端的 socket可以調用bind()函數(shù),由自己來指定 IP地
9、址及port號碼;但是也可以不調用bind(),而由Win sock來自動設定IP地址及port號碼。(2)提出連接申請客戶端的Socket使用connect()函數(shù)來提出與服務器端的Socket建立連接的申請,函數(shù)調用成功返回 0,否則返回SOCKET_ERRORint PASCAL FAR connect( SOCKET s, const struct sockaddr FAR *n ame, i nt n amele n ); 參數(shù):s: Socket的識別碼;name: Socket想要連接的對方地址;namelen : name 的長度1.3 數(shù)據(jù)的傳送雖然基于TCP/IP連接協(xié)議(
10、流套接字)的服務是設計客戶機/服務器應用程序時的主流 標準,但有些服務也是可以通過無連接協(xié)議(數(shù)據(jù)報套接字)提供的。先介紹一下TCPsocket與UDP socket在傳送數(shù)據(jù)時的特性:Stream (TCP) Socket 提供雙向、可靠、有次序、不重復的資料傳送。Datagram (UDP) Socket雖然提供雙向的通信,但沒有可靠、有次序、不重復的保證,所以UDP傳送數(shù)據(jù)可能會收到無次序、重復的資料,甚至資料在傳輸過程中出現(xiàn)遺漏。由于UDPSocket在傳送資料時,并不保證資料能完整地送達對方,所以絕大多數(shù) 應用程序都是采用 TCP處理Socket,以保證資料的正確性。一般情況下TCP
11、Socket的數(shù)據(jù)發(fā)送和接收是調用 send()及recv() 這兩個函數(shù)來達成,而UDP Socket則是用sendto()及recvfrom()這兩個函數(shù),這兩個函數(shù)調用成功發(fā)揮發(fā)送或接收的資料的長度,否則返回SOCKET_ERRORint PASCAL FAR send( SOCKET s, const char FAR *buf,int len, int flags ); 參數(shù):s: Socket的識別碼 buf:存放要傳送的資料的暫存區(qū) len buf :的長度flags :此函數(shù)被調用的方式對于Datagram Socket而言,若是datagram 的大小超過限制,則將不會送出任
12、何資料, 并會傳回錯誤值。對 Stream Socket言,Blocking 模式下,若是傳送系統(tǒng)內的儲存空間不 夠存放這些要傳送的資料,send()將會被block住,直到資料送完為止;如果該 Socket被設定為Non-Blocking模式,那么將視目前的output buffer空間有多少,就送出多少資料,并不會被block 住。flags 的值可設為0或MSG_DONTROUTE MSG_OOB勺組合。int PASCAL FAR recv( SOCKET s, char FAR *buf, int len, int flags ); 參數(shù):s: Socket的識別碼 buf:存放接收
13、到的資料的暫存區(qū) len buf :的長度flags :此函數(shù)被調用的方式1.4 TCP服務器端和客戶端編程TCP服務器端編程的一般流程為:首先TCP服務器端調用socket函數(shù)建立一個流式套接字,然后調用bind函數(shù)綁定本地地址, 接著調用Listen函數(shù)進行監(jiān)聽客戶端連接,一旦監(jiān)聽到客戶端連接請求后,服務器套接字將調用Accept函數(shù)接受客戶端連接請求,并建立連接,同時服務器端會新加一個單獨的套接字與客戶端進行通訊。對于TCP客戶端,客戶端首先調用 socket函數(shù)建立流式套接字,然后調用 connect函 數(shù),請求與服務器端 TCP建立連接,成功建立連接后,即可通服務器端進行通訊。TCP
14、服務器端和客戶端的流程如圖 9-1所示。圖9-1 TCP服務器端和客戶端流程圖2、無線網(wǎng)卡的配置為了開發(fā)平臺支持 CF無線網(wǎng)卡,在編譯WinCE操作系統(tǒng)映像文件時,必須對CF無線 網(wǎng)卡的支持進行配置,具體配置如圖9-2所示。在WinCE中沒有SL-2511無線網(wǎng)卡的驅動,必須要安裝 SL-2511CF無線網(wǎng)卡的驅動程 序(可以從網(wǎng)上下載),安裝完成后,驅動程序會自動下載到目標板。 (具體驅動程序文件為 WLANNDS.dll )。當無線網(wǎng)卡插入到目標板上,系統(tǒng)彈出要求輸入CF無線網(wǎng)卡的驅動程序Ti=1aJWirele匚叵I X未餐確認的P匸CrH適配誥OK X |5 xsbase27D Pla
15、tfotm Builder VelcoMe to Platfora Builder!輸入用于該PCCard的駝動程序名稱:馳動程序名稱:|wlannds.dll嵌入式操作系統(tǒng)實驗指導書對話框。(如圖9-3所示)。如果驅動程序存在,按照圖9-3輸入驅動程序文件后,無線網(wǎng)絡便進入自動配置和連接過程。(如圖9-4)B CEZoomO口問因回收站圖9-2 CF無線網(wǎng)卡的配置我的設備Internet Explorer Media PlayerEmdoar Syslems XSBase27Q; ARMV4I ReleaseHF *也Size; 16337 KB 姮邈)亟)莖)Adds the sElEdE
16、d 佗怕 Th巳 platformjuHBdtic gopfiguraliAdd to OS EiiGettiWhatOnlinResoDowrSupp+ +1+Dependenci es.Native Wi-Fi WLAN Access Point Components Native Wi-Fi WLAN STAWiird Local Awa hletworlfRefresh CatalogF ixtlEl-|8 xsbase270 * + _J Device C + 齊 Emdoor -Internet j* DockiYitnKi da23 Applii -BjAdIfi 10 CA f
17、t He -i Applk I Comn _| Core i _J File S Pl Fonts vFlit Edit Vi j* Project Platforih Tar gal Build Project Build OS Tooli Wind* Htlp _ g Xindows CE devicesApplications and Seivices Development Applications - End UserCoimmunication Services and Networking Networking - Local Area Network (LAN)1-3I Qi
18、a_ Q21 Networkin Networkin _| Networkin _| Servers Core OS Ser Device Mam File System;Ktlp 固 ProErtieEAdded the Software-based Input Panel Build / Debug k Log Find in Fi 1 es 1 in Files 2)to the platforn.aVSGEN_SOFTKB) to 1rAdded the Control Panel Applets featV晉篦1Jl - -1LED圖9-3 CF無線網(wǎng)卡驅動輸入對話框圖9-4 CF無線網(wǎng)絡的連接實驗內容1、無線網(wǎng)絡的配置;2、TCP/IP無線網(wǎng)絡數(shù)據(jù)傳輸?shù)木幊谭椒?3、了解面向連接的網(wǎng)絡編程方法實驗步驟第一步:連接好實驗系統(tǒng),打開實驗箱電源;第二步:插入無線網(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年航空器維修與檢修服務合同范本3篇
- 2025年度船舶船舶動力系統(tǒng)安全評估與風險控制合同3篇
- 2025年度智能電網(wǎng)設備采購與安裝合同6篇
- 2024年詳盡版:國際貨運代理與多式聯(lián)運合同
- 2024年購銷合同實例:買賣合同的詳細操作流程
- 2024銑刨作業(yè)質量控制與驗收合同3篇
- 2024年高端機床制造技術與專利許可協(xié)議
- 2024年沿海地區(qū)海鮮收購合同
- 2025年度智慧城市建設采購合同管理創(chuàng)新方案3篇
- 2024年版:工程擔保服務協(xié)議2篇
- 考研心理學專業(yè)基礎(312)研究生考試試題及解答參考(2025年)
- 2024-2025學年人教版生物學七年級上冊期末復習練習題(含答案)
- 《AIGC應用實戰(zhàn)(慕課版)》-課程標準
- 《安全生產(chǎn)治本攻堅三年行動方案(2024-2026年)》子方案合集
- 政府機關辦公用品配送方案
- 2024-2025學年遼寧省小學五年級上學期期末英語試題及解答參考
- 機器人機構學基礎 部分習題及答案(于靖軍 )
- 中建橋面系及橋梁附屬專項施工方案
- 永威置業(yè)項目交付前風險排查表
- 《儲能材料與器件》課程教學大綱(新能源材料與器件專業(yè))
- 2024年海南省公務員考試《行測》真題及答案解析
評論
0/150
提交評論