ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:402.50KB ,
资源ID:23162948      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23162948.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机网络实验报告.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机网络实验报告.docx

1、计算机网络实验报告 计算机网络实验报告姓名:胡松 学号:0909123006院系:信息科学与工程学院 专业:物联网工程班级:1202班实验一 网络路由层协议模拟实验 网络路由算法是路由器工作的核心,本实验针对因特网常用的距离向量路由算法和链路状态路由算法进行模拟实现,进一步掌握其工作原理及其相关性能。一、实验目的和要求1. 掌握VB、VC+、VS或JAVA等集成开发环境编写路由仿真程序的方法;2. 理解并掌握距离向量路由协议和链路状态路由协议的工作原理。二、实验内容模拟距离向量路由算法的路由表交换过程,演示每轮交换后路由表的变化。基本要求(动态生成网络拓扑图,节点间的距离随机生成。从初始路由表

2、开始,进行交换路由表,演示每轮交换后的路由表的变化。观察和讨论多少轮交换后路由表稳定)三、编程语言和环境1. 编程语言C/C+/C#/Java等均可;2. 编程环境Windows(MS Visual系列,VC/VB/VS.Net;)和Linux(编辑器vi+编译器GCC)均可;四、实验具体设计 1.数据结构 typedef struct int dis; /存延迟大小 int from; /存邻居节点的路由RoutNode;2函数void InitData(FILE* pfile); /*从数据文件读取数据,初始化路由表*/void OutputRoutData(); /*输出所有的路由表*/

3、void Communication(int recv, int send); /*send点向recv点发送自己的路由表*/void Exchange(); /*所有节点进行一次数据交换, 更新路由表*/五、实验结果六、实验总结: 在距离矢量路由算法中,每个路由器维护一张路由表,表中列出当前已知的到每个目标的距离以及所使用的链路。每张表又通过不断与邻居节点交换信息而不断更新,最终得出任意两个节点间的最短路径。 通过这个实验,我对于该算法的本质了解更加深入,同时也锻炼了编程能力。七、源代码:#include stdio.h#include conio.h#include stdlib.h /a

4、toi的头文件/#include alloc.h#define PATH G:1.txt#define ROUTNUM 7 /定义路由的个数为7个typedef struct int dis; /存延迟大小 int from; /存邻居节点的路由RoutNode;RoutNode dataROUTNUMROUTNUM; /*路由表,能存7行7列数据,数据为权值*/void InitData(FILE* pfile); /*从数据文件读取数据,初始化路由表*/void OutputRoutData(); /*输出所有的路由表*/void Communication(int recv, int s

5、end); /*send点向recv点发送自己的路由表*/void Exchange(); /*所有节点进行一次数据交换, 更新路由表*/void main() int start, end, j; FILE *pfile; pfile = fopen(PATH, r); if (pfile = NULL) printf(文件打开错误,按任意键退出.n); getch(); return; else printf(n路由表初始:n); InitData(pfile); fclose(pfile); for (int i = 0; iROUTNUM; i+) printf(%c|, i + 65

6、); for (j = 0; j 0) printf( , j + 65, dataij.dis); printf(n); /显示各路由的路由表 for (i = 0; i ROUTNUM; i+) /循环7次(好像多余,改成一次得到同样结果) Exchange(); printf(n路由表交换:n); OutputRoutData(); printf(输入起始路由节点数字(%d-%d)0代表A,1代表B. : , 0, ROUTNUM - 1); scanf(%d, &start); printf(输入终点路由节点数字(%d-%d)0代表A,1代表B. : , 0, ROUTNUM - 1)

7、; scanf(%d, &end); if (start = end | start 6 | end 6) printf(n输入错误,请按任意键退出n); getch(); return; else int cur = start; int total = 0; if (datastartend.dis , cur + 65); while (datacurend.from = 0) /起始点与终点不相连。0是A total += datacurdatacurend.from.dis; /total变成cur与下一跳的延迟 printf(%c-, datacurend.from + 65);

8、cur = datacurend.from; /起始路由变成下一跳 total += datacurend.dis; printf(%cn总的路由距离 = %d, end + 65, total); getch(); return; void InitData(FILE *pfile) char num10; int i = 0; char c; int m, n; fseek(pfile, 0, 0); /读取文件,起始位置0,偏移量0; for (m = 0; !feof(pfile) & m 7; m+) /feof(pfile),文件尾返回1,不是返回0.即不是文件尾部且m7循环. f

9、or (n = 0; !feof(pfile) & n = 0 & c = 9) | c = -) /如果读到数字或符号.本题路由权值只能0到9 numi+ = c; /*end of else if*/ /*end of while*/ /*end of for (n = 0*/ /*end of for (m = 0*/void OutputRoutData() int i, j; printf( ); for (i = 0; i ROUTNUM; i+) printf( %c , i + 65); printf(n); for (i = 0; i ROUTNUM; i+) printf(

10、%c , i + 65); for (j = 0; j ROUTNUM; j+) if (dataij.dis =10) printf( %d, dataij.dis); else printf( %d, dataij.dis); if (dataij.from 0) /如果未经过其它节点 所以直接相连的路由下一跳为-1 printf( - ); else printf( %c , dataij.from + 65); /输出下一跳路由 printf(n); void Communication(int recv, int send) /相连的两路由recv和send交换数据计算一次得到暂时最

11、短距离 int i; for (i = 0; i 0) /如果send节点到i号节点有路线 if (datarecvi.dis datasendi.dis + datarecvsend.dis)/第二种recv与i相连,且直接相连值大于间接到i的延迟 /如果现有路径比新路径远 datarecvi.dis = datasendi.dis + datarecvsend.dis; /将recv到i的延迟改为间接延迟的值 datarecvi.from = send; /下一跳改为send void Exchange() /实现所有相连的两路由进行数据交换并计算最短数值 int i, j; for (i

12、 = 0; i ROUTNUM; i+) for (j = 0; j 0) /如果两个节点之间有路径 Communication(j, i); /将i号节点的路由表发送给j号节点 实验二:Socket通信实验一、 实验目的与要求1 掌握VB、VC+、VS或JAVA等集成开发环境编写网络程序的方法;2 掌握客户/服务器(C/S)应用的工作方式;3. 学习网络中进程之间通信的原理和实现方法;4. 理解单播、组播和广播的原理并比较其不同之处;5. 要求本机既是客户端又是服务器端;二、 实验内容与原理实现实验内容:1. 具有点对点通信功能,任意客户端之间能够发送消息;2. 具有群组通信功能,客户端能够

13、向组内成员同时发送消息,其他组成员不能收到;3. 具有广播功能,客户端能够向所有其他成员广播消息;实验原理: Socket即为网络上的两个程序通过一个双向的通信连接实现数据的交换,这个双向链路的一段成为一个socket。Socket通常用来实现客户端和服务端的连接。它既能接受请求,也能发送请求。在我选择使用java语言中,有专门的SocketServer类和Socket类来处理用户的请求和响应。网络编程是通过使用套接字来达到进程间通信目的的编程,Socket编程是网络编程的主流工具,Socket API是实现进程间通信的一种编程设施,也是一种为进程间提供底层抽象的机制,提供了访问下层通信协议的

14、大量系统调用和相应的数据结构。三、 实验的具体设计实验代码包含四个类:ClientFrame.java, Message.java, ServerFrame.java, SocketUtil.javaClientFrame.java为客户端线程ServerFrame.java为服务器端线程Message.java为存放消息的类SocketUtil.java此类管理获得连接四、实验结果 五、实验总结本次实验让我更加深入地了解了套接字,即Socket的用法以及建立一个连接的基本步骤。通过本实验我明白了无论一个socket通信的功能如何,它搭建的基本步骤都是一样的,即:1、创建socket;2、阻塞

15、等待客户端连接;3、客户端连接之后获取输入输出流,按照协议对客户端进行读写;4、关闭socket。然后客户端连接的基本步骤也是一样的,即:1、创建客户端,连上相应的服务器;2、连上之后获取输入输出流,按照协议进行读写操作;3、关闭客户端。六、源代码:package com.my;import java.awt.BorderLayout;import java.awt.EventQueue;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedReader;imp

16、ort java.io.IOException;import java.io.InputStreamReader;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.PrintWriter;import .ServerSocket;import .Socket;import java.text.SimpleDateFormat;import java.util.Date;import javax.swing.JButton;import javax.swing.JFrame;impo

17、rt javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.border.EmptyBorder;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class ClientFrame extends JFrame private JPanel contentPane; private JTex

18、tField textSend; private JTextArea msgArea; private ServerSocket ss;/监听器 private Socket socket; private ObjectInputStream in; private ObjectOutputStream out; private boolean isExit = false; private SocketUtil util; /* * Launch the application. */ public static void main(String args) EventQueue.invok

19、eLater(new Runnable() public void run() try ClientFrame frame = new ClientFrame(); frame.setVisible(true); catch (Exception e) e.printStackTrace(); ); /* * Create the frame. */ public ClientFrame() setTitle(u5BA2u6237u7AEF); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent

20、 e) util.close(); ); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 592, 396); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5); setContentPane(contentPane); contentPane.setLayout(null); JScrollPane scrollPane = new JScrollPane(); scrollPane.setBound

21、s(10, 10, 556, 281); contentPane.add(scrollPane); msgArea = new JTextArea(); scrollPane.setViewportView(msgArea); textSend = new JTextField(); textSend.setBounds(10, 301, 457, 21); contentPane.add(textSend); textSend.setColumns(10); JButton btnSend = new JButton(u53D1u9001); btnSend.addActionListene

22、r(new ActionListener() public void actionPerformed(ActionEvent e) util.send(); ); btnSend.setBounds(477, 300, 93, 23); contentPane.add(btnSend); util = new SocketUtil(msgArea, textSend, 1); package com.my;import java.io.Serializable;public class Message implements Serializable private String msg_sen

23、d_name; private String msg_recv_name; private String msg_content; private String msg_time; public String getMsg_send_name() return msg_send_name; public void setMsg_send_name(String msg_send_name) this.msg_send_name = msg_send_name; public String getMsg_recv_name() return msg_recv_name; public void

24、setMsg_recv_name(String msg_recv_name) this.msg_recv_name = msg_recv_name; public String getMsg_content() return msg_content; public void setMsg_content(String msg_content) this.msg_content = msg_content; public String getMsg_time() return msg_time; public void setMsg_time(String msg_time) this.msg_

25、time = msg_time; public Message(String msg_send_name, String msg_recv_name, String msg_content, String msg_time) super(); this.msg_send_name = msg_send_name; this.msg_recv_name = msg_recv_name; this.msg_content = msg_content; this.msg_time = msg_time; public Message() super(); package com.my;import java.awt.BorderLayout;import java.awt.EventQueue;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.PrintWriter;import ja

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

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