- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
TcpIP-基于WinSock2的IP多播應用程序
福建农林大学计算机与信息学院
(程序设计类课程)
实验报告
课程名称:
网络环境编程
姓 名:
系:
计算机科学与技术
专 业:
计算机科学与技术
年 级:
09级
学 号:
指导教师:
职 称:
2012年 6月 11 日
福建农林大学计算机与信息学院实验报告
系: 计算机科学与技术 专业: 计算机科学与技术 年级: 09级
姓名: 学号: 实验室号 田实验楼513 计算机号 79
实验时间: 5.28 指导教师签字: 成绩:
实验四 基于WinSock 2的IP多播应用程序
一、实验目的
1.理解IP多播的基本原理。
2.掌握网际组管理协议IGMP。
3.掌握基于WinSock 2的多播应用程序设计方法。
二、实验环境与设备
本实验在实际因特网环境下进行操作,需要的设备有:一台PC机,VC++.NET 5以上版本软件。
三、实验原理
1. IGMP操作
加入多播组:主机和路由器都可以加入一个多播组。当某个主机中的一个进程申请加入一个多播组时,主机将发送一个成员关系报告报文到它所在的IP子网的多播路由器上;路由器接收到该申请后将检查它的群组成员关系表,看该主机是否已经在群组中。如果该主机不在群组关系表中(即第一次申请),随即将自己的IP模块做相应的准备,以便开始接收来自该多播组传来的数据。如果这台主机是它所在的IP子网中第一台加入该多播组的主机,则多播路由器将通过路由信息的交换加入多播分布树
退出多播组:当主机发现在一个特定的多播组中已经没有进程时,就发送退出报告。多播路由器收到退出报告后,并不立即删除这个群组,而是针对该群组发送查询报文。当在指定的时间内没有收到相关主机(和路由器)对该群组的成员关系报告时,就意味着在本网络上已经没有该群组成员,此时,多播路由器将删除该群组。否则继续保留该群组。
查询成员关系:由于多播组中的成员关系是动态变化的,并且有些变化是由于异常事件而引起的,例如某个群组的某台成员主机因异常而关机,此时多播路由器将永远接收不到其退出报告。为了实时掌握群组的成员组成,IGMP提供了一种机制来监控其某个网络上的所有主机和路由器,以便确定群组和主机或路由器之间的关系。
支持多播的应用程序接口
加入一个多播组;
离开一个多播组;
为调整范围对一个多播数据的IP 数据报中的TTL值进行设定;
为多播传输和接收设定本地的接口;
禁止输出多播数据回送。
具体应用程序接口函数如下表。
四、实验内容
以winsock 2为基础。设计一个简单的多播应用程序,运行界面可以参照如下所示。其中包括绑定本地套接字、加入多播组、退出多播组、向多播阻发送数据等操作。
五、实验步骤
1. 初始化WinSock资源
//初始化WinSock 2资源,检查系统是否安装了WinSock 2以上版本
wVersionRequested = MAKEWORD(2,2);
err = WSAStartup(wVersionRequested, wsaData);
创建套接字
Sock = WSASocket ( AF_INET,SOCK_DGRAM,IPPROTO_UDP,
(LPWSAPROTOCOL_INFO)NULL,0,
WSA_FLAG_OVERLAPPED|
WSA_FLAG_MULTIPOINT_C_LEAF|
WSA_FLAG_MULTIPOINT_D_LEAF
);
bFlag=TRUE;
err =setsockopt(Sock,SOL_SOCKET,SO_REUSEADDR,
(char*)bFlag,sizeof(bFlag));
local.sin_family = PF_INET;
local.sin_port = htons((USHORT) m_nPort);
local.sin_addr.s_addr = htonl(INADDR_ANY);
err = bind(Sock,(struct sockaddr FAR *)local,sizeof(local));
3. 设置多播数据报生存时间TTL
//设置多播数据报传播范围(生存时间TTL)
err = WSAIoctl(Sock,SIO_MULTICAST_SCOPE,m_nTTL,
sizeof(m_nTTL),NULL,0,cbRet,NULL,NULL);
4.设置多播返回
//设置多播返回
您可能关注的文档
最近下载
- 专业学位硕士研究生提升实践能力培养模式探索.docx VIP
- 某县城新建垃圾转运设施项目可行性研究报告.pdf VIP
- 第一次党课学党章讲党课.doc VIP
- 新苏教版小学四年级上册科学全册教案(完整版)(供学习).docx VIP
- SpringAIAlibaba Graph 智能体开发指南与实践.pptx VIP
- 抖音短视频运营直播带货KPI绩效考核指标(抖音直播运营规划方案 抖音直播部门组织架构及职责说明).docx
- 医疗器械采购合同.doc VIP
- 2025年吉林机关事业单位工人技术等级考试(花卉工·中级)历年参考题库含答案详解(5卷).docx VIP
- 高中英语(北师大)选择性必修二 Unit 4 Writing workshop 课件.docx VIP
- 人工湿地运行管理与维护技术方案.doc VIP
文档评论(0)