基于ODMA无线自组网的数据传输系统的设计.docx

上传人:b****6 文档编号:7868387 上传时间:2023-01-26 格式:DOCX 页数:23 大小:325.66KB
下载 相关 举报
基于ODMA无线自组网的数据传输系统的设计.docx_第1页
第1页 / 共23页
基于ODMA无线自组网的数据传输系统的设计.docx_第2页
第2页 / 共23页
基于ODMA无线自组网的数据传输系统的设计.docx_第3页
第3页 / 共23页
基于ODMA无线自组网的数据传输系统的设计.docx_第4页
第4页 / 共23页
基于ODMA无线自组网的数据传输系统的设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

基于ODMA无线自组网的数据传输系统的设计.docx

《基于ODMA无线自组网的数据传输系统的设计.docx》由会员分享,可在线阅读,更多相关《基于ODMA无线自组网的数据传输系统的设计.docx(23页珍藏版)》请在冰豆网上搜索。

基于ODMA无线自组网的数据传输系统的设计.docx

基于ODMA无线自组网的数据传输系统的设计

东北农业大学毕业论文

基于ODMA无线自组网的数据传输系统的设计

 

入学年级:

2011春

学生姓名:

祁志雷

学号:

155********1

所学专业:

计算机科学与技术

 

东北农业大学

2013年3月

摘  要

机会驱动多址接入(ODMA)是一种将自组网技术与蜂窝网技术有机结合的通信方式,是一个由第三代合作伙伴计划(3GPP)工作组所考虑的专案多跳中继协议。

ODMA技术有许多优点,例如组网快速灵活、节约信号功率等,是一个具有广阔应用前景的组网技术。

本毕业设计,主要是学习和研究ODMA技术的原理和应用方法,探讨该技术的应用前景,并利用ODMA设备搭建一个实验技术平台。

本文对ODMA技术进行了系统分析,介绍了主要的硬件设备。

重点总结整理了ODMA技术的软件开发方法,并利用套接字(socket)技术,基于VC++环境设计开发了应用程序,实现了两台计算机之间,通过ODMA网络进行的数据通信。

关键词:

机会驱动多址接入(ODMA);套接字;线程

TheDesignofDataTransmissionSystemofAdHocNetworkBasedOnODMA

ABSTRACT

Opportunitydrivenmultipleaccess(ODMA)isacellularmultihopmethodproposedforUniversalMobileTelecommunicationsSystems(UMTS)andanadhocmultihoprelayingprotocolconsideredbythethird-generationpartnershipproject(3GPP)workinggroup.ODMAhasmanyadvantages,suchas:

flexiblenetworkingandreducedsignalpoweretc..So,ithasanattractiveprospectforfuturemobilecommunicationsystems.

BasedontheresearchofbasictheoryandknowledgeaboutODMA,thispaperstatesadvantagesofODMAandapplicationinmanyfieldsindetails.Andthepaperdepictshowtomakeupanexperimentaltechnologyplatformbyusingdevices.

ThisarticleanalyzesODMAsystematicallyanddescribessomeimportanthardware.ThepapersummarisesthesoftwaredevelopmentmethodsbasedonODMA.Byusingsockettechnology,thepaperexploitsaprogrambasedonVC++soastorealizethefunctionthatusers’dataareexchangedbetweentwocomputersinODMAnetworkbasedonmultiplethread.

Keywords:

Opportunitydrivenmultipleaccess(ODMA),socket;thread

 

目  录

1 引言………………………………………………………………………………………1

1.1 研究背景和意义………………………………………………………………………1

  1.2 国内外的研究现状1

  1.3 论文的内容和章节安排2

  2 ODMA基本理论3

  2.1 ODMA技术的特点3

  2.1.1 互助机制3

  2.1.2 智能路径选择3

  2.1.3 智能调频3

  2.1.4 支持高速移动3

  2.2 ODMA技术的应用3

  2.2.1 ODMA应用于军事领域3

  2.2.2 ODMA应用于应急救灾4

  2.2.3 ODMA网络应用于偏远或不发达地区通信4

  2.2.4 ODMA可应用于车载通信4

  3 ODMA网络的搭建5

  3.1 设备介绍5

  3.1.1 种子5

  3.1.2 Dongle5

  3.2 搭建ODMA网络5

  3.2.1 种子设置5

  3.2.2 Dongle设置6

  3.2.3 网络摄像头设置6

  3.2.4 系统调试6

  4 VC++环境下的套接字编程8

  4.1 VC++简介8

  4.2 套接字编程方法简介8

  4.3 套接字之间的连接过程9

  4.4 基本socket系统调用9

  4.4.1 基于TCP(面向连接)的socket编程9

  4.4.2 基于UDP(面向无连接)的socket编程10

  5 文件传输工具的设计12

  5.1 功能需求12

  5.2 主要函数介绍13

  5.2.1 bind()函数13

  5.2.2 connect()函数13

  5.2.3 listen()函数13

  5.2.4 accept()函数13

  5.2.5 socket函数14

  5.3 线程类型14

  5.3.1 监听线程14

  5.3.2 发送线程15

  5.4 程序介绍16

  5.4.1 接收文件16

  5.4.2 发送文件17

  5.4.3 刷新功能18

5.5 程序运行效果展示20

6总结22

 

引言

1.1研究背景和意义

在过去的30年里,Internet技术和移动通信无疑是信息通信领域的两大发展热点。

近几年来,在无线移动通信技术快速的发展下,移动通信给人们的生活方式带来了深刻的变革。

人们对移动通信和宽带接入的需求持续高速增长促进了通信新技术的不断改进与创新。

在无线宽带市场竞争纷乱的格局中,无线AdHoc网络(也称为“自组网”或“多跳网络”)作为一种新兴的网络技术逐渐被广大用户所关注,开始发挥它巨大的作用并逐渐占领市场。

AdHoc网络是一种没有有线基础设施支持的移动网络,没有中心控制节点的管理。

当网络中某些节点或链路发生故障时,不会影响网络间的通信,因为网络中的节点均由移动主机构成,其他节点还可以通过相关技术继续通信。

AdHoc网络最初应用于军事领域,随着无线通信和终端技术的不断发展,众多科研人员付出很多努力把AdHoc网络技术引入到民用领域,并进行了一次伟大的尝试,即将自组网和已经获得巨大成功的蜂窝网技术整合起来。

我们都知道,蜂窝移动通信是一项十分成熟的技术。

在蜂窝中,移动设备变得相对简单,控制部分几乎全部集中在基站和基站控制器。

相对于无线AdHoc网络的分布控制来说,蜂窝的集中控制显得效率更高。

另外,无线AdHoc网络很难组成大规模的网络。

然而传统蜂窝网络建设成本高昂,建设速度也比较缓慢,建成以后如果对网络进行大规模调整是很困难的,对于负载的变化也不能很好地适应。

将无线AdHoc网络与传统蜂窝相结合恰恰可以解决对这些问题,其中0DMA(OpportunityDrivenMultipleAccess,机会驱动多址接入)就是将两者结合的技术之一[]。

1.2国内外的研究现状

国外对ODMA的研究已有三十多年的历史。

该技术在20世纪80年代,最初由ETSI提出并应用于军事领域。

1978年,南非SalbuResearchandDevelopment(SRD)(控股)有限公司的DavidLarsen和JamesLarsen首先提出了ODMA(机会驱动多址接入)的概念。

SRD(控股)有限公司的初始ODMA的示范产品工作频段是40MHz-170MHz。

由于该系统的频率是独立的,因此可以支持在40MHz-3500MHz频率范围内的大量市场用户的移动应用。

1999年ODMA正式被列入了UMTS(universalmobiletelecommunieationsystem)3Gpp标准之一[]。

OpportunityDrivenMultipleAccess(ODMA)即机会驱动多址接入是一种无线自组网技术,用于通用移动通信系统的蜂窝式多跳方法[]。

ODMA网络是由一组带有无线收发装置的节点组成的一个临时性多跳自治系统,网络构建不需要基站,组网快速灵活[]。

ODMA的物理层采用802.11g协议,数据传输速率为0-54Mb/s。

调制方式是正交频分复用(OFDM),工作频段为2.4G-2.4835GHz,该频段属于工业自由辐射频段,无需申请可以免费使用。

国内对ODMA技术的研究主要集中在台湾地区,该地区的生产厂商已经研发出一些相对成熟的ODMA产品并将其投入市场,主要用于智能路灯控制,实时监控等方面。

1.3论文的内容和章节安排

本文研究的问题是了解ODMA技术的概念、特点,在此基础上使用ODMA设备搭建一个ODMA网络,在VC++环境下使用套接字编程的方法编写出可以在PC端进行数据传输的的上位机软件。

章节安排:

第一章中简单介绍了ODMA技术的研究背景和意义,国内外的发展现状。

第二章中主要介绍了ODMA技术的特点及其在现实生活中的应用。

第三章主要介绍了ODMA设备的特点和功能以及如何使用这些设备成功搭建一个ODMA系统。

第四章主要是介绍了VC++环境下使用套接字编程的方法。

第五章主要介绍了如何设计文件传输工具,及其效果展示。

第六章主要是对本文的工作进行总结。

ODMA基本理论

2.1ODMA的特点

2.1.1互助机制

ODMA采用的是基于P2P(对等式)无线的分布式的网络架构,因为ODMA网络没有严格的控制中心,所有节点地位平等,结点可以随时加入和离开网络。

实际网络中的ODMA网络的基础节点可以由每一个用户构成,所以通讯数据可以不需要经过服务器或基站等中介的处理。

特别地,借鉴主动性互助接力通信理念,ODMA利用各节点通过接力的方式进行数据传递,因此如果需要扩大传输距离和传播范围,只要增加节点就可以轻易的满足要求,从而减少了对固网的依赖[]。

2.1.2智能路径选择

ODMA可以自行选择最佳的传输路径来进行数据传输,使用大队接力的方式通过该传输路径把数据发送出去。

在两个节点之间进行信息传输,一般会存在多条传输路径,ODMA会自动选择所需发送功率最小的路径进行传输。

同时,ODMA系统可以将数据包分成几个较小的ODMA数据包,并动态选择邻近节点的最佳空闲信道通过不同的路径传送至目的地,然后在目的地节点再将数据包重新组装。

2.1.3智能调频

ODMA采用多跳转发技术,能够自动判断所在网络的当前状况,选择传输质量最佳的时段传递数据,传完即停,随时等待下一个最佳的机会传输,而不是一直占住某一频道提高频谱的使用效率,实现了频谱共享和频谱共存,从而保证在有限的频段下提高无线传输速率[5]。

2.1.4支持高速移动

ODMA系统中的节点以高达300km/h的速度移动时,依然可以满足终端节点的通信要求。

2.2ODMA技术的应用

ODMA是一种自适应、灵活的通信中继协议,是自组网和传统蜂窝网络相结合的接入技术。

ODMA网络最大的特点是既存在基站,也允许用户进行相互中继。

ODMA是可以随机调整、智能选径、多径并联、自组互助、支持高速移动的具有突破性革命的无线宽带智能有机网络技术。

ODMA作为新兴的智能有机网络技术,基于以上特点,ODMA技术适用于军事,应急救灾,车载通信等领域。

2.2.1ODMA应用于军事领域

ODMA网络不需要架设网络设施,可快速组网,局部结点损坏不会影响整个网络的正常通信,所以将它应用于军事领域的通信优势明显,2003年美伊战争中美军就采用了ODMA技术,每个士兵都配有一个嵌入ODMA技术的手机,在没有固定通信基站的情况下,这些装置可动态组成一个ODMA通信网,士兵通过该网络进行通信。

2.2.2ODMA应用于急救救灾

在发生地震、矿难后,常规通信设施很可能因遭受损坏而无法正常通信,每个救灾人员可配带一个嵌入ODMA技术装置,在救灾的过程中这些装置动态组网,快速地建立起一个局域通信网络。

2.2.3ODMA网络应用于偏远或不发达地区通信

由于普通组网成本昂贵,在一些地理环境比较恶劣的地区,移动通信营销商往往不在这些地区安装通信基站,从而导致该地区移动通信发展滞后。

而ODMA技术的出现可以解决在这些种恶劣环境下的通信问题。

每户人家可安装一个嵌入ODMA技术的装置,这些设备自动组网,人们可以通过ODMA网络进行通信,同时ODMA技术使用的是频率为2.4GHz的完全免费的开放信道,所以解决了通信成本高昂的问题。

2.2.4ODMA可应用于车载通信

对于一般的移动通信网络,由于高速移动会产生多普勒效应,当用户自驾车在高速公路上行驶或乘坐高铁,通信信号很低,用户将无法进行正常通信。

而ODMA技术可以支持在高速移动状态下的通信,那么可以在高铁或高速公路线路上设置一些ODMA中间节点,在理论上用户可以通过嵌入ODMA技术的终端进行通信。

ODMA网络的搭建

3设备介绍

3.1.1种子

具有标准的以太网接口,嵌入固定的IP地址(IP地址为A类局域网地址,即:

IP:

10.X.X.X,子网掩码:

255.0.0.0),有13个子信道可供用户选择,静态传输速率为0-3.5Mb/s,移动传输速率为0-1Mb/s。

种子有多种型号,如P212B、P230A(P212B用于室内;P230A用于室外)。

种子具有如下功能:

第一,实现无线中继,可通过简单地增加种子的个数来扩大ODMA网络的通信覆盖范围;第二,作为无线接入点,种子与其它网络终端设备通过交叉网线相连,就可以将该设备接入到ODMA网络;第三,给信息加密,P212B嵌入了具有信息加密功能的SIM卡,从而增强了信息传输的安全性[]。

3.1.2Dongle

由一个USB口和两个可拆卸的无线收发天线组成,如图3-1所示。

它的静态速率为0-3.5Mb/s,移动传输速率为0-1Mb/s。

Dongle具有如下功能:

第一,做为无线接入点,可将计算机接入ODMA网络;第二,实现无线中继,作为通信终端在使用ODMA网络的同时,可以为其他网络节点的通信提供中继服务。

图3-1 Dongle

3.2搭建ODMA网络

3.2.1种子设置

1、将种子和电脑通过网线连接在一起,设置电脑的IP地址(IP:

192.168.60.X,子网掩码:

255.0.0.0,网关:

192.168.60.200);2、打开网络浏览器,输入种子的IP地址(每个种子都有一个固定的IP),弹出口令对话框,输入用户名和密钥,进入设置界面,设置种子的子信道为13。

(因为种子有13个子信道可选,那么在组网前,需要将网络中的所有种子设置为同一子信道,否则种子间将无法通信。

3.2.2Dongle设置

1、电脑插上Dongle,安装Dongle的驱动程序;2、开始-控制面板-管理工具-服务-WirelessZeroConfiguration的属性-启动;3、打开无线连接,连接ODMA网络;4、设置Dongle的IP地址(IP:

10.0.0.X,子网掩码:

255.0.0.0);5、无线网络连接-属性-常规-配置-高级-2.4GHz-选择子信道13。

3.2.3网络摄像头设置

设置网络摄像头的IP地址和对应的种子的IP地址在同一网段。

比如:

种子IP:

10.9.17.96,子网掩码:

255.255.255.0,网关:

10.0.0.254,与之相连的网络摄像头IP:

10.137.17.96,子网掩码:

255.255.255.0,网关:

10.0.0.254。

就是说种子IP地址的第二段比网络摄像头IP地址的第二段小128。

3.2.4系统调试

如图3-2所示连接设备,设置完成后,进行系统调试。

调试方法:

电脑连上Dongle,使用ping指令测试种子的连通情况。

如图3-3调试图所示,目标种子的地址为:

10.137.17.96,电脑到目标种子的传输最长延时为1ms,丢包率为0,说明种子连接良好。

如果显示目标地址不可达,则可能是由于网线没插好,Dongle、种子IP设置错误,设备不在相同信道等原因造成的,依次排查,找出问题所在。

 

图3-2 ODMA网络图

图3-3调试图

系统调试成功后,就可以实现信息传输,通过计算机观察摄像头所看到的影响,如图3-4影像所示。

图3-4影像

VC++环境下的套接字编程

4.1VC++简介

MicrosoftVisualC++是Microsoft公司推出的开发Win32环境程序,是一种强大而又复杂的开发工具,面向对象的可视化集成编程系统。

VC++的应用非常广泛,从桌面应用程序到服务器端软件,从单机程序到分布式应用程序,从图形图像处理到游戏的开发,VC++无处不在。

它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。

它以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级除错功能而著称。

比如,它允许用户进行远程调试,单步执行等。

还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。

其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。

这些特征明显缩短程式编辑、编译及连结的时间花费,在大型软件计划上尤其显著。

4.2套接字编程方法简介

套接字起源于20世纪70年代加州大学伯克利分校版本的Unix,即人们经常说的BSDUnix。

套接字指两台计算机上运行的两个程序之间的一个双向通信的连接点,它提供一种可靠的面向连接的数据传输方式,他能保证发送的数据无重复的按顺序到达目的地。

把Socket看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中。

如图4-1所示,

图4-1  Socket信息传输示意图

Socket的出现,使程序员可以方便地访问TCP/IP,从而开发出各种网络应用程序。

应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。

多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。

为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了套接字,如图4-2所示。

图4-3  进程间通信示意图

4.3套接字之间的连接过程

网络应用程序通过Socket进行数据接收与发送:

Socket是连接应用程序和网络驱动程序的桥梁,Socket在应用程序中创建,通过bind与驱动程序建立联系。

此后,应用程序送给Socket的数据,由Socket交给驱动程序向网络上发送出去。

计算机从网络上收到与该Socket绑定的IP+Port相关数据后,由驱动程序交给Socket,应用程序便可从该Socket中提取接收到的数据。

根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:

第一,服务器监听。

服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。

第二,客户端请求。

由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。

为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。

第三,连接确认。

当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。

而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

4.4基本socket系统调用

4.4.1基于TCP(面向连接)的socket编程

提供面向连接、可靠的数据传输服务,数据按字节流、按顺序收发,保证在传输过程中无丢失、无冗余。

服务器端首先创建套接字(socket)并返回引用新套接字的描述符,socket()函数的第二个参数必须是流式套接字(SOCK_STREAM),之后由bind函数将此套接字描述符与本机的建立关联。

然后调用listen函数将套接字置于被动的侦听方式以监听连接,准备接受客户请求。

服务器只有在调用了accept函数进入等待状态后才可以接受来自客户端的请求,一旦接收到客户端通过connect函数发出的连接请求,accept将返回一个新的套接字描述符,通过此描述符调用send/recv函数就可以与客户端进行数据收发。

待数据传输完成后,服务端和客户端调用closesocket函数关闭套接字[]。

请注意,此时服务器关闭的套接字是有前面accept函数所返回的,而不是开始时创建的套接字。

在此套接字被关闭后,服务器将等待下一个客户端的连接请求并重复上述过程。

如图4-4所示。

图4-4  TCP连接流程图

4.4.2基于UDP(面向无连接)的socket编程

提供面向无连接的服务,数据收发无序,不能保证数据的准确到达。

对于使用无连接协议的套接字系统,它的服务器通常是面向事物处理,一个请求、应答即完成了客户端与服务器进程的相互作用。

socket()函数的第二个参数必须是数据报套接字(SOCK_DGRAM)。

服务器在调用socket建立数据报套接字后必须调用bind函数来将此套接字与本机地址绑定。

而对于客户机,bind的调用不是必须的,即可以通过它指定IP地址及端口号,也可以直接由套接字来设定IP地址及端口号。

这样通信双方通过socket和bind函数建立了半相关。

之后使用recvfrom函数和sendto函数以指明源地址和目的地址,从而在数据的收发过程动态建立起全相关,待数据传输完成后,服务端和客户端调用closesocket函数关闭套接字。

由于TCP协议的三次握手机制,相对于UDP来说,在数据传输时更加可靠,因此在后面的程序中我采用了基于TCP(面向连接)的socket编程。

文件传输工具的设计

5.1功能需求

文件传输的完整流程中,有可能出现接收端拒绝接收文件,或者发生端在传输过程中,发送端或接收端中断接收的情况,在实现编程的过程中必须考虑这些问题。

所以文件传输工具除了能实现文件的接收与发送的基本功能外,还需要具备以下的几个功能:

第一,文件在传输过程中不应该影响用户界面的操作;第二,在正式传输文件前,发送方应先发送请求,接收方可以同意或拒绝文件发送,接收方同意后才能进行文件传输;第三,在文件在传输过程中,可以显示文件的信息,如文件名、保存路径、文件大小;第四,每两个用户之间,可以同时接收或发送多个文件,接收和发送可以同时进行。

如图5-1所示,

图5-1 文件发送流程图[]

5.2主要函数介绍

5.2.1bind()函数

函数定义是intbind(SOCKETs,conststructsockaddrFAR*name,intnamelen)。

bind()函数将本地地址和一个套接字关联起来。

第一个参数s指定要绑定的套接字,第二个参数指定了该套接字的本地地址信息,是指向sockaddr结构

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1