• 工作总结
  • 工作计划
  • 心得体会
  • 述职报告
  • 事迹材料
  • 申请书
  • 作文大全
  • 读后感
  • 调查报告
  • 励志歌曲
  • 请假条
  • 创先争优
  • 毕业实习
  • 财神节
  • 高中主题
  • 小学一年
  • 名人名言
  • 财务工作
  • 小说/有
  • 承揽合同
  • 寒假计划
  • 外贸信函
  • 励志电影
  • 个人写作
  • 其它相关
  • 生活常识
  • 安全稳定
  • 心情短语
  • 爱情短信
  • 工会工作
  • 小学五年
  • 金融类工
  • 搞笑短信
  • 医务工作
  • 党团工作
  • 党校学习
  • 学习体会
  • 下半年工
  • 买卖合同
  • qq空间
  • 食品广告
  • 办公室工
  • 保险合同
  • 儿童英语
  • 软件下载
  • 广告合同
  • 服装广告
  • 学生会工
  • 文明礼仪
  • 农村工作
  • 人大政协
  • 创意广告
  • 您现在的位置:六七范文网 > 其它相关 > 正文

    基于Qt开发环境的多网卡计算机组播通信技术研究

    来源:六七范文网 时间:2023-06-11 00:20:04 点击:


    打开文本图片集

    摘要:在Qt开发环境下,开发人员可以方便地使用Qt开发库提供的UDP组播通信函数进行软件开发。但在多网卡计算机环境中,使用Qt开发的软件无法绑定指定的网卡接收数据。探讨基于Qt开发环境的多网卡计算机组播通信技术,提出解决上述问题的有效方法。

    关键词关键词:Qt;C++;QUdpSocket;组播

    DOIDOI:10.11907/rjdk.151853

    中图分类号:TP393

    文献标识码:A文章编号文章

    编号:16727800(2015)011014603

    基金项目基金项目:

    作者简介作者简介:刘彦平(1984-),男,山西五寨人,硕士,太原卫星发射中心工程师,研究方向为软件开发及维护。

    0引言

    Qt[1]是诺基亚公司开发的具有优良跨平台特性的C++图形用户界面应用程序框架,它提供给应用程序开发者建立艺术级图形用户界面所需的所有功能。Qt完全面向对象且很容易扩展,并且允许真正地组件编程,已经成为全球众多成功应用程序的基础[2]。Qt最初主要是为跨平台软件开发提供统一、精美的图形用户编程接口而设计,同时也提供了优秀且统一的网络编程接口。Qt的类库类似于MFC的开发库,但Qt的类库封装了适应不同操作系统访问的细节,是支持跨平台的类库,这正是Qt的魅力所在。由于Qt具有良好的跨平台性,可以减少开发者在不同开发平台下应用程序的工作量,可预见Qt的应用将更加广泛[14]。

    网络编程是软件开发的主要内容之一,传统方法大多利用套接字 Socket 进行编程,由于套接字包含了众多的函数和数据结构,因此较难掌握与使用。Qt将与网络编程有关的函数和数据结构封装成各种类,使开发人员不用面对各种复杂的 API 函数与数据结构,缩短了开发周期,保证了代码的高效与简洁[5]。但是,在多网卡的计算机环境中使用Qt提供的QUdpSocket类开发应用程序进行组播数据收发时,会出现无法绑定到指定网卡接收数据的现象。本文主要通过对Qt中与UDP组播通信有关的类进行深入研究,解决Qt开发软件在多网卡计算机环境中无法绑定到指定网卡的问题。

    1组播通信原理及问题描述

    组播即IP多播技术始于上世纪80年代,1988年Steve Deering首次在其博士论文当中提出了IP多播的概念。在TCP/IP通信中有3种通信方式,即单播、广播和组播。单播为一对一的信息传送,对服务质量要求高。广播使用子网内的特殊IP地址,IP地址最后一段为255,进行广播时子网内所有电脑均可收到数据报,通信量巨大,智能低,所以不被允许跨越网段。组播使用IP分组的概念,在路由中建立IP组,并在子网中充分利用硬件多播的方式进行信息传送,组播通过路由传送是允许跨越网段的。由于在子网中利用了硬件多播的方式,不参加组播组的电脑不会收到组播数据报,所以实现了广播,又有效控制了流量,增大了广播范围。

    1.1组播通信原理

    组播使用IPv4网络中的D类IP地址,范围从224.0.0.0至239.255.255.255,在这个范围当中没有任何主机,而专门用于组播,所以D类IP不允许出现在任何形式的源地址当中[6]。组播开始时,进程首先申请加入一个组播组,之后由主机向路由器发出加入组播组的申请,路由器向所有可以联系到的路由器发出申请,以便接收组播数据。这样就完成了加入组播组的工作[7]。发送组播数据时,先将数据打包进一个UDP数据报,然后发送到路由器,路由器在可以联系到的路由当中使用同一个组的路由,并进行转发。不在同一组的路由和主机不会接收到本组的数据报[8]。通过这种方式既扩大了通信范围,又有效抑制了通信数据量。

    组播使用IGMP协议(Internet Group Management Protocol)进行管理[9]。要进行组播的主机必须要有IGMP协议的支持。同时,组播也必须有支持组播的路由器支持,在已有的部分路由器当中,组播并不是默认启动的服务[10]。

    3结语

    本文使用Qt开发库自带的QUdpSocket类创建的Udp组播通信程序在多网卡计算机中,无法绑定到指定的网卡接收组播数据。通过深入研究Up组播通信的原理和无法接收Udp组播数据的机理,指出了Qt开发库中提供的QUdpSocket类中的bind函数存在Bug,无法在多网卡计算机中绑定到指定的网卡接收组播数据。最后,通过UdpBindFunction类将创建的套接字绑定到多网卡计算机的特定网卡接收组播数据,并巧妙地与利用QUdpSocket类创建的套接字联系在一起,进而可以方便的利用Qt的信号槽等机制实现组播数据的接收。本文可为相关开发人员提供技术参考。

    参考文献参考文献:

    [1]陆文周.Qt5开发及实例[M].北京:电子工业出版社,2014: 13.

    [2]闫锋欣,曾泉人,张志强.C++ GUI Qt4编程[M].北京:电子工业出版社,2013: 1115.

    [3]蔡志明.精通Qt4编程[M].北京:电子工业出版社,2008: 231235.

    [4]叶保留,顾宝成,陆桑璐,等.组播技术综述[J].小型微型计算机系统,2004,25 (8): 14091414.

    [5]雷停.基于QT的跨平台网络通信的设计与实现[J].网络安全技术与应用,2014(5): 4549.

    [6]朱利,周俊辉,郑守淇.WINDOWS下组播通信的研究与实现[J].小型微型计算机系统,2000,21(2): 132134.

    [7]陈魁.VC++中UDP通信的实现[J].微机发展,2003,13 (9): 3839.

    [8]朱三元.网络通信软件设计指南[M].北京:清华大学出版社,1994.

    [9]吴捷,杜庆平.Linux下基于Qt4的跨平台聊天系统设计[J].电脑知识与技术,2014,10 (15): 35353537.

    [10]王苏敏,陈淦,廖晶晶.Linux系统下基于Qt局域网聊天系统的[J].计算机光盘与软件,2012,(22): 130132.

    [11]赵祖龙.基于Qt/Embedded的嵌入式跨平台聊天系统设计[J].信息技术,2010(12): 144147.

    [12]周敏.UDP协议下可靠信息传输的研究与实现[J].电脑开发与应用,2011,24(12): 1112.

    [13]王艳芳,戴永,刘东华,等.基于UDP的数据可靠传输技术研究与应用[J] .计算机工程与应用,2009(5):20 22.

    [14]谢希仁.计算机网络(第5版) [M] .北京: 电子工业出版社,2010.

    [15]何进,谢松巍.基于Socket的TCP/IP网络通讯模式研究[J].计算机应用研究,2001,18(8): 134135.

    [16]白建平,王军锋,闫锋欣,等.Qt高级编程[M] 北京:电子工业出版社 2011: 131138.

    责任编辑(责任编辑:陈福时)

    推荐访问:技术研究 网卡 组播 通信 环境