版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机网络实验报告0909122820周建权第第页计算机网络实验报告专业班级:信安1202班指导老师:王伟平姓名:周建权学号:0909122820实验二网络路由层协议模拟实验网络路由算法是路由器工作的核心,本实验针对因特网常用的距离向量路由算法和链路状态路由算法进行模拟实现,进一步掌握其工作原理及其相关性能。【实验目的和要求】掌握VB、VC++、VS或JAVA等集成开发环境编写路由仿真程序的方法;理解并掌握距离向量路由协议和链路状态路由协议的工作原理。【实验内容】2.实现链路状态路由算法的模拟。基本要求(动态生成网络拓扑图,节点间的距离随机生成。每个节点生成自己的链路状态分组,依据收到的链路状态表得到整体网络结构,在得到的整体网络结构上用最短路径算法,生成每个节点的路由表)进一步的要求:可以将模拟实验的每个节点程序部署在不同的电脑上,通过socket通信程序完成路由表信息或者链路状态分组的发送(与实验三结合)。请用两台机器虚拟成多个网络节点(一台机器上开启多个通信进程,每个进程虚拟成一个节点),完成每个虚拟节点的路由表生成,进而按照路由表转发数据包。【编程语言和环境】编程语言C++编程环境Windows(MSVisual系列,VC/VB/VS.Net;)【基本原理】在一个链路状态路由选择中,一个结点检查所有直接链路的状态,并将所得的状态信息发送给网上所有的其他的结点,而不仅仅是发给那些直接相连的结点。每个节点都用这种方式,所有其他的结点从网上接收包含直接链路状态的路由信息。每当链路状态报文到达时,路由结点便使用这些状态信息去更新自己的网路拓扑和状态“视野图”,一旦链路状态发生改变,结点对跟新的网络图利用Dijkstra最短路径算法重新计算路由,从单一的报源发出计算到达所有的结点的最短路径。【实现过程】
1.流程图输入数据初始化连接矩阵迪杰斯特拉算法打印路径运行界面截图【实验总结】1.算法优缺点分析优点:路由信息的一致性好,坏消息也一样传播得快;状态分组的长度较短,仅包含到邻接点的距离、序号和年龄等,与网络规模关系不大,传输所耗用的网络带宽不大,此外,状态分组的扩散,由于年龄参数的设定,不会无限制扩散,所以可适用于大型网络。缺点:每个路由器需要有较大的存储空间,用以存储所收到的每一个节点的链路状态分组;计算工作量大,每次都必须计算最短路径。2.实验过程心得体会在实验的过程中我们要培养自己的独立分析问题,和解决问题的能力。培养这种能力的前题是你对每次实验的态度。如果你在实验这方面很随便,抱着等老师教你怎么做,拿同学的报告去抄,尽管你的成绩会很高,但对将来工作是不利的。所以尽量还是要自己做而不是到处抄袭。实验三Socket通信实验网络编程是通过使用套接字来达到进程间通信目的的编程,Socket编程是网络编程的主流工具,SocketAPI是实现进程间通信的一种编程设施,也是一种为进程间提供底层抽象的机制,提供了访问下层通信协议的大量系统调用和相应的数据结构。本实验利用SocketAPI编写网络通信程序,具体实验要求及内容如下。【实验目的和要求】掌握VB、VC++、VS或JAVA等集成开发环境编写网络程序的方法;掌握客户/服务器(C/S)应用的工作方式;学习网络中进程之间通信的原理和实现方法;理解单播、组播和广播的原理并比较其不同之处;要求本机既是客户端又是服务器端;【实验内容】所编写的程序应具有如下功能:具有点对点通信功能,任意客户端之间能够发送消息;具有群组通信功能,客户端能够向组内成员同时发送消息,其他组成员不能收到;具有广播功能,客户端能够向所有其他成员广播消息;【编程语言和环境】Java+Eclipse【实验内容与实现原理】服务器,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。【实现过程】1.流程图服务器发送接收接收发送接收发送用户一用户二用户三发送接收2.部分代码**服务器入口程序*/publicclassServerMain{ publicstaticvoidmain(String[]args){ intport=Integer.parseInt(DataBuffer.configProp.getProperty("port")); //初始化服务器套节字 try{ DataBuffer.serverSocket=newServerSocket(port); }catch(IOExceptione){ e.printStackTrace(); } newThread(newRunnable(){//启动新线程进行客户端连接监听 publicvoidrun(){ try{ while(true){ //监听客户端的连接 Socketsocket=DataBuffer.serverSocket.accept(); System.out.println("客户来了:" +socket.getInetAddress().getHostAddress() +":"+socket.getPort()); //针对每个客户端启动一个线程,在线程中调用请求处理器来处理每个客户端的请求 newThread(newRequestProcessor(socket)).start(); } }catch(IOExceptione){ e.printStackTrace(); } } }).start();/** *定义连接服务器的方法 */ publicvoidconnect(){ try{ userThread=newUserChatThread("localhost",6666,jtereceive); System.out.println("已经连接到服务器"); if(userThread.connectServer()){ userThread.start(); } }catch(Exceptione){ e.getStackTrace(); } }//客户端聊天界面 JPanelbtn2Panel=newJPanel(); btn2Panel.setLayout(newFlowLayout(FlowLayout.RIGHT)); this.add(btn2Panel,BorderLayout.SOUTH); JButtoncloseBtn=newJButton("关闭"); closeBtn.setToolTipText("退出整个程序"); btn2Panel.add(closeBtn); JButtonsubmitBtn=newJButton("发送"); submitBtn.setToolTipText("按Enter键发送消息"); btn2Panel.add(submitBtn); sendPanel.add(btn2Panel,BorderLayout.SOUTH); //在线用户列表面板 JPanelonlineListPane=newJPanel(); onlineListPane.setLayout(newBorderLayout()); onlineCountLbl=newJLabel("在线用户列表(1)"); onlineListPane.add(onlineCountLbl,BorderLayout.NORTH);//服务器界面 this.setTitle("服务器启动");//设置服务器启动标题 this.setBounds((DataBuffer.screenSize.width-500)/2, (DataBuffer.screenSize.height-375)/2,500,375); this.setLayout(newBorderLayout()); JPanelpanel=newJPanel(); Borderborder=BorderFactory.createEtchedBorder(EtchedBorder.LOWERED); panel.setBorder(BorderFactory.createTitledBorder(border, "服务器监控",TitledBorder.LEFT,TitledBorder.TOP)); this.add(panel,BorderLayout.NORTH); JLabellabel=newJLabel("服务器当前监听在:" +DataBuffer.serverSocket.getLocalPort()+"端口"); panel.add(label); JButtonexitBtn=newJButton("关闭服务器");//关闭关闭服务器按钮 panel.add(exitBtn);【实验结果】1.服务器界面2.用户登录界面3初始化界面4点对点通信5.群聊6.广播【实验总结】1.网络编程就是通过计算机网络与其他程序进行通信的程序,Socket编程是网络编程的主
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025下半年四川自贡市属事业单位考试聘用人员高频重点提升(共500题)附带答案详解
- 2025下半年北京市延庆县事业单位招聘39人历年高频重点提升(共500题)附带答案详解
- 2025上海地铁第一运营限公司多职能队员(巡视)(储备)招聘50人高频重点提升(共500题)附带答案详解
- 2025上半年贵州六盘水市事业单位及国企业招聘应征入伍大学毕业生【92】人高频重点提升(共500题)附带答案详解
- 2025上半年四川省江油市事业单位招聘95人历年高频重点提升(共500题)附带答案详解
- 农村建设诚信承诺书模板
- 银行网点智能系统布线合同
- 商场屋面瓦安装合同
- 2024年租房合同终止协议3篇
- 2024年物业中介服务定金协议
- 以学增智-提升推进高质量发展的本领研讨发言稿
- 2023年10月自考00055企业会计学真题及答案含评分标准
- 幼儿园人事工作总结
- 可修改版五年级数学期中考试答题卡模板
- 精装修工程工作界面划分
- 山东省青岛市市北区2023-2024学年九年级上学期11月期中数学试题
- 【语文】上海市三年级上册期末复习试题(含答案)
- 遥感技术基础第二版课后答案
- 项目式高中化学教学《保护珊瑚礁的措施-沉淀溶解平衡》
- 犯罪现场勘察题库(348道)
- 八段锦操作评分标准
评论
0/150
提交评论