無(wú)線網(wǎng)絡(luò)通信實(shí)驗(yàn)._第1頁(yè)
無(wú)線網(wǎng)絡(luò)通信實(shí)驗(yàn)._第2頁(yè)
無(wú)線網(wǎng)絡(luò)通信實(shí)驗(yàn)._第3頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、實(shí)驗(yàn)九無(wú)線網(wǎng)絡(luò)通信實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康?掌握Socket編程方法;2、掌握WinCE無(wú)線網(wǎng)絡(luò)的配置過(guò)程;3、了解TCP/IP協(xié)議4、熟悉EVC和VS.Net的開(kāi)發(fā)環(huán)境;實(shí)驗(yàn)儀器1 裝有Platform Builder、EVC和VS.Net開(kāi)發(fā)平臺(tái)的 PC機(jī)一臺(tái)2、XSBase270實(shí)驗(yàn)開(kāi)發(fā)平臺(tái)一套3、SL-2511 CF無(wú)線網(wǎng)卡一塊4、無(wú)線AP 一套實(shí)驗(yàn)原理1、軟件原理1.1 服務(wù)器端操作socket (套接字)(1)在初始化階段調(diào)用 WSAStartup()此函數(shù)在應(yīng)用程序中初始化Win dows Sockets DLL ,只有此函數(shù)調(diào)用成功后,應(yīng)用程序才可以再調(diào)用其他 Windows Socket

2、s DLL 中的API函數(shù)。(2)建立 Socket初始化 Win Sock的動(dòng)態(tài)連接庫(kù)后,需要在服務(wù)器端建立一個(gè)監(jiān)聽(tīng)的Socket,為此可以調(diào)用Socket()函數(shù)用來(lái)建立這個(gè)監(jiān)聽(tīng)的 Socket,并定義此Socket所使用的通信協(xié)議。此函 數(shù)調(diào)用成功返回 Socket對(duì)象,失敗則返回INVALID_SOCKET調(diào)用 WSAGetLastError()可得知 原因,所有Win Socket的函數(shù)都可以使用這個(gè)函數(shù)來(lái)獲取失敗的原因)。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é)定(如果使用者不指定則設(shè)為0);如果要建立的是遵從 TCP/IP協(xié)議的socket,第二個(gè)參數(shù)type應(yīng)為SOCK_STREAM為UDP (數(shù)據(jù)報(bào))的 socket,應(yīng)為 SOCK_DGRAM(3 )綁定端口接下來(lái)要為服務(wù)器端定義的這個(gè)監(jiān)聽(tīng)的Socket指定一個(gè)地址及端口( Port ),這樣客戶端才知道待會(huì)要連接哪一個(gè)地址的哪個(gè)端口,為此我們要調(diào)用bind()函數(shù),該函數(shù)調(diào)用成功返回0,否則返回SOCKET_ERRORint PASCAL FAR bi nd( SOCKET

4、 s, const struct sockaddr FAR *n ame,i nt n amele n ); 參數(shù):s : Socket對(duì)象名;name: Socket的地址值,這個(gè)地址必須是執(zhí)行這個(gè)程式所在機(jī)器的IP地址;namelen : name 的長(zhǎng)度;如果使用者不在意地址或端口的值,那么可以設(shè)定地址為INADDR_ANY及Port為0,Windows Sockets會(huì)自動(dòng)將其設(shè)定適當(dāng)之地址及 Port (1024到5000之間的值)。此后可以 調(diào)用getsockname()函數(shù)來(lái)獲知其被設(shè)定的值。(4) 監(jiān)聽(tīng)當(dāng)服務(wù)器端的 Socket對(duì)象綁定完成之后,服務(wù)器端必須建立一個(gè)監(jiān)聽(tīng)的隊(duì)列來(lái)

5、接收客 戶端的連接請(qǐng)求。listen()函數(shù)使服務(wù)器端的 Socket進(jìn)入監(jiān)聽(tīng)狀態(tài),并設(shè)定可以建立的最大連接數(shù)(目前最大值限制為5,最小值為1)。該函數(shù)調(diào)用成功返回0,否則返回SOCKET_ERRORint PASCAL FAR liste n( SOCKET s, i nt backlog );參數(shù):s :需要建立監(jiān)聽(tīng)的 Socket ;backlog :最大連接個(gè)數(shù);服務(wù)器端的Socket調(diào)用完listen()后,如果此時(shí)客戶端調(diào)用connect ()函數(shù)提出連接申請(qǐng)的話,Server端必須再調(diào)用accept()函數(shù),這樣服務(wù)器端和客戶端才算正式完成通信程序的連接動(dòng)作。(5) 服務(wù)器端接受

6、客戶端的連接請(qǐng)求當(dāng)Clie nt提出連接請(qǐng)求時(shí),Server端hwnd視窗會(huì)收到 Win sock Stack 送來(lái)我們自定義的一個(gè)消息,這時(shí),我們可以分析lParam,然后調(diào)用相關(guān)的函數(shù)來(lái)處理此事件。為了使服務(wù)器端接受客戶端的連接請(qǐng)求,就要使用accept()函數(shù),該函數(shù)新建一Socket與客戶端的Socket相通,原先監(jiān)聽(tīng)之Socket繼續(xù)進(jìn)入監(jiān)聽(tīng)狀態(tài), 等待他人的連接要求。該函數(shù)調(diào)用成功返回一個(gè)新產(chǎn)生的Socket對(duì)象,否則返回INVALID_SOCKETSOCKET PASCAL FAR accept( SCOKET s, struct sockaddr FAR *addr,i nt

7、FAR *addrlen ); 參數(shù):s: Socket的識(shí)別碼;addr :存放來(lái)連接的客戶端的地址;addrlen : addr 的長(zhǎng)度(6) 結(jié)束socket 連接結(jié)束服務(wù)器和客戶端的通信連接是很簡(jiǎn)單的,這一過(guò)程可以由服務(wù)器或客戶機(jī)的任一端啟動(dòng),只要調(diào)用 closesocket() 就可以了,而要關(guān)閉 Server端監(jiān)聽(tīng)狀態(tài)的socket,同樣也 是利用此函數(shù)。另外,與程序啟動(dòng)時(shí)調(diào)用WSAStartup()憨數(shù)相對(duì)應(yīng),程式結(jié)束前,需要調(diào)用WSAClea nup()來(lái)通知 Win sock Stack 釋放Socket所占用的資源。這兩個(gè)函數(shù)都是調(diào)用 成功返回0,否則返回SOCKET_ER

8、RORint PASCAL FAR closesocket( SOCKET s );參數(shù):s: Socket的識(shí)別碼;int PASCAL FAR WSAClea nup( void );參數(shù): 無(wú)1.2 客戶端Socket的操作(1)建立客戶端的 Socket客戶端應(yīng)用程序首先也是調(diào)用WSAStartup()函數(shù)來(lái)與Win sock的動(dòng)態(tài)連接庫(kù)建立關(guān)系,然后同樣調(diào)用socket()來(lái)建立一個(gè)TCP或UDP socket (相同協(xié)定的sockets 才能相通,TCP對(duì)TCP,UDP對(duì)UDP)。與服務(wù)器端的socket不同的是,客戶端的 socket可以調(diào)用bind()函數(shù),由自己來(lái)指定 IP地

9、址及port號(hào)碼;但是也可以不調(diào)用bind(),而由Win sock來(lái)自動(dòng)設(shè)定IP地址及port號(hào)碼。(2)提出連接申請(qǐng)客戶端的Socket使用connect()函數(shù)來(lái)提出與服務(wù)器端的Socket建立連接的申請(qǐng),函數(shù)調(diào)用成功返回 0,否則返回SOCKET_ERRORint PASCAL FAR connect( SOCKET s, const struct sockaddr FAR *n ame, i nt n amele n ); 參數(shù):s: Socket的識(shí)別碼;name: Socket想要連接的對(duì)方地址;namelen : name 的長(zhǎng)度1.3 數(shù)據(jù)的傳送雖然基于TCP/IP連接協(xié)議(

10、流套接字)的服務(wù)是設(shè)計(jì)客戶機(jī)/服務(wù)器應(yīng)用程序時(shí)的主流 標(biāo)準(zhǔn),但有些服務(wù)也是可以通過(guò)無(wú)連接協(xié)議(數(shù)據(jù)報(bào)套接字)提供的。先介紹一下TCPsocket與UDP socket在傳送數(shù)據(jù)時(shí)的特性:Stream (TCP) Socket 提供雙向、可靠、有次序、不重復(fù)的資料傳送。Datagram (UDP) Socket雖然提供雙向的通信,但沒(méi)有可靠、有次序、不重復(fù)的保證,所以UDP傳送數(shù)據(jù)可能會(huì)收到無(wú)次序、重復(fù)的資料,甚至資料在傳輸過(guò)程中出現(xiàn)遺漏。由于UDPSocket在傳送資料時(shí),并不保證資料能完整地送達(dá)對(duì)方,所以絕大多數(shù) 應(yīng)用程序都是采用 TCP處理Socket,以保證資料的正確性。一般情況下TCP

11、Socket的數(shù)據(jù)發(fā)送和接收是調(diào)用 send()及recv() 這兩個(gè)函數(shù)來(lái)達(dá)成,而UDP Socket則是用sendto()及recvfrom()這兩個(gè)函數(shù),這兩個(gè)函數(shù)調(diào)用成功發(fā)揮發(fā)送或接收的資料的長(zhǎng)度,否則返回SOCKET_ERRORint PASCAL FAR send( SOCKET s, const char FAR *buf,int len, int flags ); 參數(shù):s: Socket的識(shí)別碼 buf:存放要傳送的資料的暫存區(qū) len buf :的長(zhǎng)度f(wàn)lags :此函數(shù)被調(diào)用的方式對(duì)于Datagram Socket而言,若是datagram 的大小超過(guò)限制,則將不會(huì)送出任

12、何資料, 并會(huì)傳回錯(cuò)誤值。對(duì) Stream Socket言,Blocking 模式下,若是傳送系統(tǒng)內(nèi)的儲(chǔ)存空間不 夠存放這些要傳送的資料,send()將會(huì)被block住,直到資料送完為止;如果該 Socket被設(shè)定為Non-Blocking模式,那么將視目前的output buffer空間有多少,就送出多少資料,并不會(huì)被block 住。flags 的值可設(shè)為0或MSG_DONTROUTE MSG_OOB勺組合。int PASCAL FAR recv( SOCKET s, char FAR *buf, int len, int flags ); 參數(shù):s: Socket的識(shí)別碼 buf:存放接收

13、到的資料的暫存區(qū) len buf :的長(zhǎng)度f(wàn)lags :此函數(shù)被調(diào)用的方式1.4 TCP服務(wù)器端和客戶端編程TCP服務(wù)器端編程的一般流程為:首先TCP服務(wù)器端調(diào)用socket函數(shù)建立一個(gè)流式套接字,然后調(diào)用bind函數(shù)綁定本地地址, 接著調(diào)用Listen函數(shù)進(jìn)行監(jiān)聽(tīng)客戶端連接,一旦監(jiān)聽(tīng)到客戶端連接請(qǐng)求后,服務(wù)器套接字將調(diào)用Accept函數(shù)接受客戶端連接請(qǐng)求,并建立連接,同時(shí)服務(wù)器端會(huì)新加一個(gè)單獨(dú)的套接字與客戶端進(jìn)行通訊。對(duì)于TCP客戶端,客戶端首先調(diào)用 socket函數(shù)建立流式套接字,然后調(diào)用 connect函 數(shù),請(qǐng)求與服務(wù)器端 TCP建立連接,成功建立連接后,即可通服務(wù)器端進(jìn)行通訊。TCP

14、服務(wù)器端和客戶端的流程如圖 9-1所示。圖9-1 TCP服務(wù)器端和客戶端流程圖2、無(wú)線網(wǎng)卡的配置為了開(kāi)發(fā)平臺(tái)支持 CF無(wú)線網(wǎng)卡,在編譯WinCE操作系統(tǒng)映像文件時(shí),必須對(duì)CF無(wú)線 網(wǎng)卡的支持進(jìn)行配置,具體配置如圖9-2所示。在WinCE中沒(méi)有SL-2511無(wú)線網(wǎng)卡的驅(qū)動(dòng),必須要安裝 SL-2511CF無(wú)線網(wǎng)卡的驅(qū)動(dòng)程 序(可以從網(wǎng)上下載),安裝完成后,驅(qū)動(dòng)程序會(huì)自動(dòng)下載到目標(biāo)板。 (具體驅(qū)動(dòng)程序文件為 WLANNDS.dll )。當(dāng)無(wú)線網(wǎng)卡插入到目標(biāo)板上,系統(tǒng)彈出要求輸入CF無(wú)線網(wǎng)卡的驅(qū)動(dòng)程序Ti=1aJWirele匚叵I X未餐確認(rèn)的P匸CrH適配誥OK X |5 xsbase27D Pla

15、tfotm Builder VelcoMe to Platfora Builder!輸入用于該P(yáng)CCard的駝動(dòng)程序名稱:馳動(dòng)程序名稱:|wlannds.dll嵌入式操作系統(tǒng)實(shí)驗(yàn)指導(dǎo)書(shū)對(duì)話框。(如圖9-3所示)。如果驅(qū)動(dòng)程序存在,按照?qǐng)D9-3輸入驅(qū)動(dòng)程序文件后,無(wú)線網(wǎng)絡(luò)便進(jìn)入自動(dòng)配置和連接過(guò)程。(如圖9-4)B CEZoomO口問(wèn)因回收站圖9-2 CF無(wú)線網(wǎng)卡的配置我的設(shè)備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ú)線網(wǎng)卡驅(qū)動(dòng)輸入對(duì)話框圖9-4 CF無(wú)線網(wǎng)絡(luò)的連接實(shí)驗(yàn)內(nèi)容1、無(wú)線網(wǎng)絡(luò)的配置;2、TCP/IP無(wú)線網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)木幊谭椒?3、了解面向連接的網(wǎng)絡(luò)編程方法實(shí)驗(yàn)步驟第一步:連接好實(shí)驗(yàn)系統(tǒng),打開(kāi)實(shí)驗(yàn)箱電源;第二步:插入無(wú)線網(wǎng)卡,安

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論