无线网络通信实验._第1页
无线网络通信实验._第2页
无线网络通信实验._第3页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验九无线网络通信实验实验目的1掌握Socket编程方法;2、掌握WinCE无线网络的配置过程;3、了解TCP/IP协议4、熟悉EVC和VS.Net的开发环境;实验仪器1 装有Platform Builder、EVC和VS.Net开发平台的 PC机一台2、XSBase270实验开发平台一套3、SL-2511 CF无线网卡一块4、无线AP 一套实验原理1、软件原理1.1 服务器端操作socket (套接字)(1)在初始化阶段调用 WSAStartup()此函数在应用程序中初始化Win dows Sockets DLL ,只有此函数调用成功后,应用程序才可以再调用其他 Windows Socket

2、s DLL 中的API函数。(2)建立 Socket初始化 Win Sock的动态连接库后,需要在服务器端建立一个监听的Socket,为此可以调用Socket()函数用来建立这个监听的 Socket,并定义此Socket所使用的通信协议。此函 数调用成功返回 Socket对象,失败则返回INVALID_SOCKET调用 WSAGetLastError()可得知 原因,所有Win Socket的函数都可以使用这个函数来获取失败的原因)。SOCKET PASCAL FAR socket( int af, int type, int protocol )参数:af:目前只提供 PF_INET(AF_

3、INET);type : Socket 的类型(SOCK_STREAM SOCK_DGRA;)protocol :通讯协定(如果使用者不指定则设为0);如果要建立的是遵从 TCP/IP协议的socket,第二个参数type应为SOCK_STREAM为UDP (数据报)的 socket,应为 SOCK_DGRAM(3 )绑定端口接下来要为服务器端定义的这个监听的Socket指定一个地址及端口( Port ),这样客户端才知道待会要连接哪一个地址的哪个端口,为此我们要调用bind()函数,该函数调用成功返回0,否则返回SOCKET_ERRORint PASCAL FAR bi nd( SOCKET

4、 s, const struct sockaddr FAR *n ame,i nt n amele n ); 参数:s : Socket对象名;name: Socket的地址值,这个地址必须是执行这个程式所在机器的IP地址;namelen : name 的长度;如果使用者不在意地址或端口的值,那么可以设定地址为INADDR_ANY及Port为0,Windows Sockets会自动将其设定适当之地址及 Port (1024到5000之间的值)。此后可以 调用getsockname()函数来获知其被设定的值。(4) 监听当服务器端的 Socket对象绑定完成之后,服务器端必须建立一个监听的队列来

5、接收客 户端的连接请求。listen()函数使服务器端的 Socket进入监听状态,并设定可以建立的最大连接数(目前最大值限制为5,最小值为1)。该函数调用成功返回0,否则返回SOCKET_ERRORint PASCAL FAR liste n( SOCKET s, i nt backlog );参数:s :需要建立监听的 Socket ;backlog :最大连接个数;服务器端的Socket调用完listen()后,如果此时客户端调用connect ()函数提出连接申请的话,Server端必须再调用accept()函数,这样服务器端和客户端才算正式完成通信程序的连接动作。(5) 服务器端接受

6、客户端的连接请求当Clie nt提出连接请求时,Server端hwnd视窗会收到 Win sock Stack 送来我们自定义的一个消息,这时,我们可以分析lParam,然后调用相关的函数来处理此事件。为了使服务器端接受客户端的连接请求,就要使用accept()函数,该函数新建一Socket与客户端的Socket相通,原先监听之Socket继续进入监听状态, 等待他人的连接要求。该函数调用成功返回一个新产生的Socket对象,否则返回INVALID_SOCKETSOCKET PASCAL FAR accept( SCOKET s, struct sockaddr FAR *addr,i nt

7、FAR *addrlen ); 参数:s: Socket的识别码;addr :存放来连接的客户端的地址;addrlen : addr 的长度(6) 结束socket 连接结束服务器和客户端的通信连接是很简单的,这一过程可以由服务器或客户机的任一端启动,只要调用 closesocket() 就可以了,而要关闭 Server端监听状态的socket,同样也 是利用此函数。另外,与程序启动时调用WSAStartup()憨数相对应,程式结束前,需要调用WSAClea nup()来通知 Win sock Stack 释放Socket所占用的资源。这两个函数都是调用 成功返回0,否则返回SOCKET_ER

8、RORint PASCAL FAR closesocket( SOCKET s );参数:s: Socket的识别码;int PASCAL FAR WSAClea nup( void );参数: 无1.2 客户端Socket的操作(1)建立客户端的 Socket客户端应用程序首先也是调用WSAStartup()函数来与Win sock的动态连接库建立关系,然后同样调用socket()来建立一个TCP或UDP socket (相同协定的sockets 才能相通,TCP对TCP,UDP对UDP)。与服务器端的socket不同的是,客户端的 socket可以调用bind()函数,由自己来指定 IP地

9、址及port号码;但是也可以不调用bind(),而由Win sock来自动设定IP地址及port号码。(2)提出连接申请客户端的Socket使用connect()函数来提出与服务器端的Socket建立连接的申请,函数调用成功返回 0,否则返回SOCKET_ERRORint PASCAL FAR connect( SOCKET s, const struct sockaddr FAR *n ame, i nt n amele n ); 参数:s: Socket的识别码;name: Socket想要连接的对方地址;namelen : name 的长度1.3 数据的传送虽然基于TCP/IP连接协议(

10、流套接字)的服务是设计客户机/服务器应用程序时的主流 标准,但有些服务也是可以通过无连接协议(数据报套接字)提供的。先介绍一下TCPsocket与UDP socket在传送数据时的特性:Stream (TCP) Socket 提供双向、可靠、有次序、不重复的资料传送。Datagram (UDP) Socket虽然提供双向的通信,但没有可靠、有次序、不重复的保证,所以UDP传送数据可能会收到无次序、重复的资料,甚至资料在传输过程中出现遗漏。由于UDPSocket在传送资料时,并不保证资料能完整地送达对方,所以绝大多数 应用程序都是采用 TCP处理Socket,以保证资料的正确性。一般情况下TCP

11、Socket的数据发送和接收是调用 send()及recv() 这两个函数来达成,而UDP Socket则是用sendto()及recvfrom()这两个函数,这两个函数调用成功发挥发送或接收的资料的长度,否则返回SOCKET_ERRORint PASCAL FAR send( SOCKET s, const char FAR *buf,int len, int flags ); 参数:s: Socket的识别码 buf:存放要传送的资料的暂存区 len buf :的长度flags :此函数被调用的方式对于Datagram Socket而言,若是datagram 的大小超过限制,则将不会送出任

12、何资料, 并会传回错误值。对 Stream Socket言,Blocking 模式下,若是传送系统内的储存空间不 够存放这些要传送的资料,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 ); 参数:s: Socket的识别码 buf:存放接收

13、到的资料的暂存区 len buf :的长度flags :此函数被调用的方式1.4 TCP服务器端和客户端编程TCP服务器端编程的一般流程为:首先TCP服务器端调用socket函数建立一个流式套接字,然后调用bind函数绑定本地地址, 接着调用Listen函数进行监听客户端连接,一旦监听到客户端连接请求后,服务器套接字将调用Accept函数接受客户端连接请求,并建立连接,同时服务器端会新加一个单独的套接字与客户端进行通讯。对于TCP客户端,客户端首先调用 socket函数建立流式套接字,然后调用 connect函 数,请求与服务器端 TCP建立连接,成功建立连接后,即可通服务器端进行通讯。TCP

14、服务器端和客户端的流程如图 9-1所示。图9-1 TCP服务器端和客户端流程图2、无线网卡的配置为了开发平台支持 CF无线网卡,在编译WinCE操作系统映像文件时,必须对CF无线 网卡的支持进行配置,具体配置如图9-2所示。在WinCE中没有SL-2511无线网卡的驱动,必须要安装 SL-2511CF无线网卡的驱动程 序(可以从网上下载),安装完成后,驱动程序会自动下载到目标板。 (具体驱动程序文件为 WLANNDS.dll )。当无线网卡插入到目标板上,系统弹出要求输入CF无线网卡的驱动程序Ti=1aJWirele匚叵I X未餐确认的P匸CrH适配誥OK X |5 xsbase27D Pla

15、tfotm Builder VelcoMe to Platfora Builder!输入用于该PCCard的驼动程序名称:驰动程序名称:|wlannds.dll嵌入式操作系统实验指导书对话框。(如图9-3所示)。如果驱动程序存在,按照图9-3输入驱动程序文件后,无线网络便进入自动配置和连接过程。(如图9-4)B CEZoomO口问因回收站图9-2 CF无线网卡的配置我的设备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无线网卡驱动输入对话框图9-4 CF无线网络的连接实验内容1、无线网络的配置;2、TCP/IP无线网络数据传输的编程方法;3、了解面向连接的网络编程方法实验步骤第一步:连接好实验系统,打开实验箱电源;第二步:插入无线网卡,安

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论