收藏 分销(赏)

网络专业课程设计方案报告.doc

上传人:a199****6536 文档编号:2683623 上传时间:2024-06-04 格式:DOC 页数:15 大小:189.04KB
下载 相关 举报
网络专业课程设计方案报告.doc_第1页
第1页 / 共15页
网络专业课程设计方案报告.doc_第2页
第2页 / 共15页
网络专业课程设计方案报告.doc_第3页
第3页 / 共15页
网络专业课程设计方案报告.doc_第4页
第4页 / 共15页
网络专业课程设计方案报告.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、 课程设计报告运用DELPHI实现IGMP合同系 别电子信息系专业名称计算机科学与技术班级学号4080117学生姓名徐本领指引教师曲荣欣成 绩7月13日1设计题目运用DELPHI实现IGMP合同2目规定(1) 理解IGMP合同基本原理和功能(2) 熟悉DELPHI软件编程操作(3) 通过用DELPHI编程实现Internet组管理合同基本功能3设计分析3.1IGMP合同Internet 组管理合同(IGMP)是因特网合同家族中一种组播合同,用于IP主机向任一种直接相邻路由器报告她们构成员状况。IGMP信息封装在IP报文中,其IP合同号为2。它用来在IP主机和与其直接相邻组播路由器之间建立、维护

2、组播构成员关系。IGMP不涉及组播路由器之间构成员关系信息传播与维护,这某些工作由各组播路由合同完毕。所有参加组播主机必要实现IGMP。参加IP组播主机可以在任意位置、任意时间、成员总数不受限制地加入或退出组播组。组播路由器不需要也不也许保存所有主机成员关系,它只是通过IGMP合同理解每个接口连接网段上与否存在某个组播组接受者,即构成员。而主机方只需要保存自己加入了哪些组播组。IGMP在主机与路由器之间是不对称:主机需要响应组播路由器IGMP查询报文,即以IGMP MEMBERSHIP REPORT报文响应;路由器周期性发送成员资格查询报文,然后依照收到响应报文拟定某个特定组在自己所在子网上与

3、否有主机加入,并且当收到主机退出组报告时,发出特定组查询报文(IGMP版本2),以拟定某个特定组与否已无成员存在。3.2IGMP如何封装在IP数据报中正如ICMP同样,IGMP也被当作IP层一某些。IGMP报文通过IP数据报进行传播。不像咱们已经见到其她合同,IGMP有固定报文长度,没有可选数据。图3-2显示了IGMP报文如何封装在IP数据报中。IP首部IGMP报文IP数据报20字节8字节3.3IGMP报文字段格式图3-3显示了长度为8字节IGMP报文格式未用检查和4位IGMP版本(1)4位IGMP类型(1-2)03 47 815 163132位组地址(D类IP地址)8字节这是版本为1IGMP

4、。IGMP类型为1阐明是由多播路由器发出查询报文,为2阐明是主机发出报告报文。检查和计算和ICMP合同相似。组地址为D类IP地址。在查询报文中组地址设立为0,在报告报文中组地址为要参加组地址。3.4加入一种多播组多播基本就是一种进程概念(使用术语进程是指操作系统执行一种程序),该进程在一种主机给定接口上加入了一种多播组。在一种给定接口上多播组中成员是动态它随时因进程加入和离开多播组而变化。这里所指进程必要以某种方式在给定接口上加入某个多播组。进程也能离开先前加入多播组。这些是一种支持多播主机中任何API所必须某些。使用限定词“接口”是由于多播组中成员是与接口有关联。一种进程可以在各种接口上加入

5、同一多播组。3.5IGMP报告和查询多播路由器使用IGMP报文来记录与该路由器相连网络中构成员变化状况。使用规则如下: (1) 当第一种进程加入一种组时,主机就发送一种IGMP报告。如果一种主机各种进程加入同一组,只发送一种IGMP报告。这个报告被发送到进程加入组所在同一接口上。 (2) 进程离开一种组时,主机不发送IGMP报告,即便是组中最后一种进程离开。主机懂得在拟定组中已不再有构成员后,在随后收到IGMP查询中就不再发送报告报文。 (3) 多播路由器定期发送IGMP查询来理解与否尚有任何主机包具有属于多播组进程。多播路由器必要向每个接口发送一种IGMP查询。由于路由器但愿主机对它加入每个

6、多播组均发回一种报告,因而IGMP查询报文中组地址被设立为0。 (4) 主机通过发送IGMP报告来响应一种IGMP查询,对每个至少还包括一种进程组均要发回IGMP报告。4详细设计4.1主机端设计界面4.2服务器端设计界面4.3主机加入服务器广播组4.4从服务器端查询主机4.5服务器向主机发送广播消息4.6主机收到服务器广播消息4.7单个主机离开组播4.8主机离开后服务器再次广播4.9主机端显示离开主机收不到广播消息5程序源代码5.1服务器端代码unit Unit1;interfaceuses Windows,Messages,SysUtils,Variants,Classes,Graphics

7、,Controls,Forms, Dialogs ,Buttons,StdCtrls,ExtCtrls,ColorGrd,Sockets,IdUDPServer, IdBaseComponent,IdComponent,IdUDPBase,IdUDPClient,IdSocketHandle;type Tms = class(TForm) BitBtn1:TBitBtn; BitBtn2:TBitBtn; IdUDPClient1:TIdUDPClient; IdUDPServer1:TIdUDPServer; Edit1:TEdit; ListBox1:TListBox; procedure

8、 FormShow(Sender:TObject); procedure BitBtn1Click(Sender:TObject); procedure BitBtn2Click(Sender:TObject); procedure IdUDPServer1UDPRead(Sender:TObject;AData:TStream; ABinding:TIdSocketHandle); private ComputerName:array0.127 of Char; Private declarations public Public declarations end;var ms:Tms; p

9、ort:integer;implementation$R *.dfmprocedure Tms.FormShow(Sender:TObject);var sz:dword;begin /获得字符串大小 port:= 101; sz := SizeOf(Computername); /得到本机标记 GetComputerName(ComputerName,sz); Try /设定等待时间为50ms IdUDPClient1.ReceiveTimeout:=50000; /设定远程目的主机接受端标语为101,可觉得其她值 IdUDPClient1.Port:=101; /设定本地端标语为100 I

10、dUDPServer1.DefaultPort:=100; /打开UDP服务器,开始监听端口 IdUDPServer1.Active := true; except on E:Exception do begin E.Message := 出错:#13#10+E.Message; raise; Application.Terminate; end; end;end;procedure Tms.BitBtn1Click(Sender:TObject);varcodestr:String;begin listbox1.Items.Add(开始查询组内主机); codestr:= Q1; /否则获得

11、当前网友主机名或者IP地址 idudpclient1.Host:=computerName; /将数据发送给远程主机 for port:= 101 to 110 do Try IdUDPClient1.Port:=port; idudpclient1.Send(codestr); except on E:Exception do begin E.Message := 出错:#13#10+E.Message; raise; Application.Terminate; end; end;end;procedure Tms.BitBtn2Click(Sender:TObject);varcodeS

12、tr:String;begin codeStr:= + edit1.Text; /否则获得当前网友主机名或者IP地址 idudpclient1.Host:=computerName; /将数据发送给远程主机 for port:= 101 to 110 do Try IdUDPClient1.Port:=port; idudpclient1.Send(codestr); except end;end;procedure Tms.IdUDPServer1UDPRead(Sender:TObject;AData:TStream; ABinding:TIdSocketHandle);var codeS

13、tr,cs:String;begin /设立字符串长度 SetLength(codestr,AData.Size); /把收到数据写入字符串中 AData.Read(codestr1,AData.Size); if codestr1 + codestr2 = RQ then cs:=IP地址为224.0.0. + codestr4 + codestr5 + codestr6 +主机在本组; if codestr1 + codestr2 = IN then cs:=IP地址为224.0.0. + codestr3 + codestr4 + codestr5 +主机已加入本组; if codest

14、r1 + codestr2 = OU then cs:=IP地址为224.0.0. + codestr3 + codestr4 + codestr5 +主机已离开本组; listbox1.Items.Add(cs);end;end.5.2主机端代码unit Unit1;interfaceuses Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms, Dialogs,StdCtrls,IdUDPClient,IdBaseComponent,IdComponent,IdUDPBase, IdUDPServer ,Id

15、SocketHandle,Buttons;type Tmc = class(TForm) Label1:TLabel; Edit2:TEdit; IdUDPServer1:TIdUDPServer; Label3:TLabel; BitBtn2:TBitBtn; BitBtn3:TBitBtn; IdUDPClient2:TIdUDPClient; procedure FormShow(Sender:TObject); procedure IdUDPServer1UDPRead(Sender:TObject;AData:TStream; ABinding:TIdSocketHandle); p

16、rocedure BitBtn2Click(Sender:TObject); procedure BitBtn3Click(Sender:TObject); private ComputerName:array0.127 of Char; Private declarations public Public declarations end; type chuan = class a,st,n1,n2,cs:word; end;var mc:Tmc;implementation$R *.dfmprocedure Tmc.FormShow(Sender:TObject);var sz:dword

17、;dport:integer;begin dport:= 103; Try sz:= sizeof(Computername); GetComputerName(ComputerName,sz); /设定等待时间为50ms IdUDPClient2.ReceiveTimeout:=50000; /设定远程目的主机接受端标语为100,可觉得其她值 IdUDPClient2.Port:=100; /设定本地端标语为dport值 IdUDPServer1.DefaultPort:=dport; /打开UDP服务器,开始监听端口 label3.Caption:= inttostr(IdUDPServe

18、r1.DefaultPort); except on E:Exception do begin E.Message := 出错:#13#10+E.Message; raise; Application.Terminate; end; end;end;procedure Tmc.IdUDPServer1UDPRead(Sender:TObject;AData:TStream; ABinding:TIdSocketHandle);var codestr,re:String;begin /设立字符串长度 SetLength(codestr,AData.Size); /把收到数据写入字符串中 ADat

19、a.Read(codestr1,AData.Size); if codestr1 = Q then re:= RQ1+inttostr(IdUDPServer1.DefaultPort); idudpclient2.Host:=computerName; /将数据发送给远程主机 idudpclient2.Send(re); if codestr1 = then edit2.Text:= codestr;end;procedure Tmc.BitBtn2Click(Sender:TObject);var codeStr:string;begin IdUDPServer1.Active := tr

20、ue; codeStr:= IN + inttostr(idudpserver1.DefaultPort); /否则获得当前网友主机名或者IP地址 idudpclient2.Host:=computerName; /将数据发送给远程主机 idudpclient2.Send(codeStr);end;procedure Tmc.BitBtn3Click(Sender:TObject); var codeStr:string;begin codeStr:= OU + inttostr(idudpserver1.DefaultPort); /否则获得当前网友主机名或者IP地址 idudpclient

21、2.Host:=computerName; /将数据发送给远程主机 idudpclient2.Send(codeStr); IdUDPServer1.Active := false;end;end.6设计总结本次网络课程设计,巩固了我所学计算机网络知识,进一步提高了我对问题分析能力和编程能力。同步,我也熟悉了Delphi软件基本操作,并可以编写某些简朴应用程序。固然,在这次设计过程中,我遇到了各种各样不懂问题,然而也就是在一步一步解决这些问题过程中我发现了自己诸多局限性之处,对此前所学过诸多知识理解得不够深刻透彻,掌握得不够牢固。通过本次课程设计使我加强了对课上所学知识理解,加深了对许多器件功

22、能结识,提高了我综合运用所学知识分析和解决实际问题能力。同步也加强了我实践能力并且这次课程设计使我懂得了理论与实际相结合重要性,熟悉理论知识是必要,然而也是远远不够,只有把所学理论知识与实践练习巧妙地相结合起来,从实践中得出结论,进而才干培养、提高自己实际动手能力和独立思考能力。在咱们一起讨论课题、查找资料、调试程序和撰写报告过程中,我深刻体会到团队真正含义,团队需要个人,个人也离不开团队。一种团队工作必要发扬团结协作精神,团结协作是咱们成功一项非常重要保证。7参照文献1 王罡,林立志. 基于Windows TCP/IP编程M. 北京. 清华大学出版社,2 谢希仁. 计算机网络M. 北京. 电子工业出版社,3 杨长春. Delphi程序设计教程M. 北京. 清华大学出版社,

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服