搜索
您的当前位置:首页正文

计算机网络实验报告

来源:知库网
中南大学实验报告

学院名称: 信息科学与工程学院 专业班级: 物联网工程1201班 科目: 计算机网络 学号: 09090120719 姓名: 王杰

2014年5月5日

实验一 分槽ALOHA协议仿真实验

实验要求

用于在多路访问信道上确定下一个使用者的协议属于数据链路层的一个子层,称为介质访问控制(Medium Access Control,MAC)子层,许多局域网都使用多路访问信道作为它的通信基础。最简单的信道分配方案是FDM(为每个站专门分配一段频率)和TDM(为每个站分配一个时槽),当站的数量比较大而且可变,或者流量具有突发性变化的时候,就需要用到纯ALOHA协议或分槽ALOHA协议。如果信道的状态可以被检测到,可以用到1-坚持型CSMA、非坚持CSMA和P-坚持CSMA等协议。本实验模拟常见的几种MAC层多路访问协议,具体实验要求及内容如下。

【实验目的】

1. 掌握VB、VC++、VS或JAVA等集成开发环境编写仿真程序的方法; 2. 理解并掌握分槽ALOHA协议原理。

【实验内容】

编写仿真程序,对一定网络环境下MAC层的多路访问协议的分槽ALOHA协议进行实现。通过仿真,学习协议采取的介质访问管理,包括介质分配和冲突解决机制,并对协议的性能与理论结果进行比较分析。

【编程语言和环境】

1. 编程语言C/C++/C#/Java/Matlab等均可;

2. 编程环境Windows(MS Visual系列,VC/VB/VS.Net;)和Linux(编辑器vi+编译

器GCC)均可;

实验过程

运行界面

功能说明 (1)创建站点

点击创建站点按钮,弹出对话框输入创建站点的数目

(2)开始

点击文件菜单下的开始按钮,开始演示实验

(3)暂停

点击文件菜单下的暂停按钮,可暂停演示过程,界面如上图 (4)结束

点击文件菜单下的结束按钮,可结束演示过程,界面如上图 (5)实时显示各站点发送状态,如正在传送的包,已经完成包的数量,正发生冲突的包,截图如下

完成时

关键算法说明 初始化

private Random r = new Random(); private long temp =new Random();

利用线程实时监控是否有包传送时间在同一帧中,若有则发生冲突

//冲突

for (int i = 0; i < 100; i++) {

a[j.getN()] = a[j.getN()]+1;

try {

Thread.sleep(1);

while(a[j.getN()]>1) { temp = r.nextInt(5)+1; Thread.sleep(temp*20);}

若没有,则继续判断发送

while(true){

try {

N = N+1;

Thread.sleep(20);

} catch (InterruptedException e) { e.printStackTrace(); } }

实验三Socket通信实验

实验要求

网络编程是通过使用套接字来达到进程间通信目的的编程,Socket编程是网络编程的主流工具,Socket API是实现进程间通信的一种编程设施,也是一种为进程间提供底层抽象的机制,提供了访问下层通信协议的大量系统调用和相应的数据结构。本实验利用Socket API编写网络通信程序,具体实验要求及内容如下。

【实验目的和要求】

1. 掌握VB、VC++、VS或JAVA等集成开发环境编写网络程序的方法; 2. 掌握客户/服务器(C/S)应用的工作方式; 3. 学习网络中进程之间通信的原理和实现方法; 4. 理解单播、组播和广播的原理并比较其不同之处; 5. 要求本机既是客户端又是服务器端;

【实验内容】

所编写的程序应具有如下功能:

1. 具有点对点通信功能,任意客户端之间能够发送消息;

2. 具有群组通信功能,客户端能够向组内成员同时发送消息,其他组成员不能收到;

3. 具有广播功能,客户端能够向所有其他成员广播消息;

【编程语言和环境】

1. 编程语言C/C++/C#/Java等均可;

2. 编程环境Windows(MS Visual系列,VC/VB/VS.Net;)和Linux(编辑器vi+编译

器GCC)均可;

实验过程

运行界面 (1)服务器

(2)客户端 客户端登陆界面

点击确定,登陆成功,否则退出登陆

在开启一个客户端

(3)演示聊天功能 1)群聊功能

若不作特殊选择,任一客户端发送消息将经由服务器端转发至所有客户端

此时服务器端实时显示多有聊天信息

2)私聊功能

若某个客户端选择其中某个用户传送消息,则只有该用户可以收到该消息,类似私聊功能,如例子中,用户姚明只选择了用户科比发送消息,则用户乔丹将收不到消息

3)服务器广播功能

点击服务器Java图标显示广播功能,将能给所有在线用户广播消息,也可以选择单独给某个客户端发送消息,其操作过程如私聊功能相似 在该输入框中输入广播

关键算法说明

创建Socket端口,并实时进行接收和转送 Socket ssocket=new Socket(); String reader=null; BufferedReader br=null; PrintStream ps=null; TranThread(Socket ssocket){ this.ssocket=ssocket;

try{InputStream is=ssocket.getInputStream();

br=new

BufferedReader(new

InputStreamReader(is)); ps=new

PrintStream(ssocket.getOutputStream());}catch(Exception e){} }

客户端连接到端口,往Socket中传信息

csocket=new Socket(\"127.0.0.1\

ReadThread rt=new ReadThread(csocket); rt.start();

try{ OutputStream os=csocket.getOutputStream();

PrintStream ps=new PrintStream(os); ps.println(\"*\"+cname); }

catch(Exception e){}

while(true){

InputStream is=csocket.getInputStream(); BufferedReader

br=new

BufferedReader(new InputStreamReader(is));

message=br.readLine(); if(message.startsWith(\"*\")){ } else{

jta2.append(message+\"\\n\");

jta2.append(message+\"上线了\"+\"\\n\"); jta1.append(message+\"\\n\");

经过此实验感想:

次认真的进行试验,虽然完成的未必完美,功能未必完善,但经过自己一段时间的思考和钻研,不仅使自己语言运用和编程能力有了极大的提高,还极大地促进了自己对课本中知识更深入详细的了解,更重

要的是在这个过程中学会了发现问题和解决问题的能力,这才是最最重要的,也是此次最大的收获

参考资料:

计算机网络 严伟 潘爱民 Java语言程序设计 郭克华

因篇幅问题不能全部显示,请点此查看更多更全内容

Top