版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学生学号实验课成绩武汉理工大学学生实验报告书实验课程名称计算机网络开课学院计算机科学与技术学院指导老师姓名刘维学生姓名学生专业班级2013—2014学年第二学期实验课程名称:计算机网络实验项目名称获取以太网卡的mac地址实验成绩实验者专业班级组别同组者实验日期第一部分:实验分析与设计(可加页)一、实验内容描述(问题域描述)设计一个程序,使得能够获取本机安装的以太网卡的物理地址。二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)MAC(MediaAccessControl,介质访问控制层)地址,定义了数据帧怎样在介质上进行传输。在共享同一个带宽的链路中,对连接介质的访问是“先来先服务”的。物理寻址在此处被定义,逻辑拓扑(信号通过物理拓扑的路径)也在此处被定义。线路控制、出错通知(不纠正)、帧的传递顺序和可选择的流量控制也在这一子层实现。实验原理:使用Microsoft的NetbiosAPI。这是一套通过Winsock提供底层网络支持的命令。实验Netbios的最大缺点是必须在系统中安装了Netbios服务。除此之外,这种方法又快又准确。NetbiosAPI只包括了一个函数,就叫做Netbios。这个函数使用网络控制块(networkcontrolblock)结构作为参数,这个结构告诉函数要做什么。其中,结构中最重要的就是ncb_command成员。这个成员告诉Netbios该做什么。使用32个命令来探测mac地址,它们在MSDN的定义如下:NCBENUMWindows:列举系统中网卡的数量。使用此命令后,ncb_buffer成员指向由LANA_ENUM结构填充的缓冲区。NCBASTAT:获得每个网卡的状态NCBRESET:重置网卡。网卡在接受新的NCB命令之前必须重置。
三、主要仪器设备及耗材Windows操作系统,VC6.0第二部分:实验调试与结果分析(可加页)调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)#include<stdio.h>#include<stdlib.h>#include<httpext.h>#include<windef.h>#include<Nb30.h>#pragmacomment(lib,"netapi32.lib")intgetMAC(char*mac){NCBncb; typedefstruct_ASTAT_//定义结构体ASTAT,*PASTAT {ADAPTER_STATUSadapt; NAME_BUFFERNameBuff[30]; }ASTAT,*PASTAT; ASTATAdapter;//定义ASTAT类的实体Adapter typedefstruct_LANA_ENUM//定义结构体LANA_ENUM {UCHARlength; UCHARlana[MAX_LANA]; }LANA_ENUM;LANA_ENUMlana_enum;//定义LANA_ENUM类的实体lana_enum UCHARuRetCode; memset(&ncb,0,sizeof(ncb));//取得网卡列表 memset(&lana_enum,0,sizeof(lana_enum)); ncb.ncb_command=NCBENUM;//ncb_buffer成员指向由lana_enum填充的缓冲区。 ncb.ncb_buffer=(unsignedchar*)&lana_enum; ncb.ncb_length=sizeof(LANA_ENUM);//获取缓冲区大小 uRetCode=Netbios(&ncb); if(uRetCode!=NRC_GOODRET) returnuRetCode; for(intlana=0;lana<lana_enum.length;lana++)//取得本地以太网卡地址 {ncb.ncb_command=NCBRESET;//重置网卡 ncb.ncb_lana_num=lana_enum.lana[lana]; uRetCode=Netbios(&ncb); if(uRetCode==NRC_GOODRET) break; } if(uRetCode!=NRC_GOODRET) returnuRetCode; memset(&ncb,0,sizeof(ncb));//发送NCBASTAT命令,获得每个网卡的状态 ncb.ncb_command=NCBASTAT; ncb.ncb_lana_num=lana_enum.lana[0]; strcpy((char*)ncb.ncb_callname,"*"); ncb.ncb_buffer=(unsignedchar*)&Adapter; ncb.ncb_length=sizeof(Adapter);//获取缓冲区大小 uRetCode=Netbios(&ncb); if(uRetCode!=NRC_GOODRET) returnuRetCode; sprintf(mac,"%02X-%02X-%02X-%02X-%02X-%02X",//输出网卡地址 Adapter.adapt.adapter_address[0], Adapter.adapt.adapter_address[1], Adapter.adapt.adapter_address[2], Adapter.adapt.adapter_address[3], Adapter.adapt.adapter_address[4], Adapter.adapt.adapter_address[5] ); return0;}intmain(intargc,char*argv[]){charmac[200]; getMAC(mac); printf("MACAddress:%s\n",mac); return0;}二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)进入路由器设置界面(/),查看本地mac地址,如下图:图1、进入路由器查看的本地mac地址运行程序,得到本机的mac地址,如下图:图2、运行程序后获得的mac地址由此可知,本次实验成功!三、实验小结、建议及体会通过本实验,我认识到mac地址定义了数据帧怎样在介质上进行传输。在共享同一个带宽的链路中,对连接介质的访问是“先来先服务”的。同时,使用Microsoft的NetbiosAPI进行程序的设计,并且准确获取了本地mac地址。实验课程名称:计算机网络实验项目名称Socket支持下网上点对点通信的实现实验成绩实验者专业班级组别同组者实验日期第一部分:实验分析与设计(可加页)实验内容描述(问题域描述)使用Socket接口进行网络通信的过程如图5-1所示,简要步骤如下:=1\*GB3①建立一个socket;=2\*GB3②按要求配置socket,即将socket连接到远程主机或给socket指定一个本地协议端口;=3\*GB3③按要求通过socket发送和接收数据;=4\*GB3④关闭此socket。图1、socket示例二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。开发原理:服务器,使用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实现的。三、主要仪器设备及耗材Windows操作系统,JDK第二部分:实验调试与结果分析(可加页)调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)ListenTCP: import.*;importjava.io.*;publicclassListenTCP //监听TCP数据包的服务端程序{ publicstaticvoidmain(String[]args) { ServerSocketlisten=null;//定义一个ServerScoket类型的引用Socketsoc=null;//定义Socket的应用,用于套接字连接Stringmessage=null; BufferedReaderbf=null;//定义一个BufferedReader类型的读内容的引用 InputStreamReaderisr=null;//定义一个可读输入流try{ listen=newServerSocket(10000);//创建一个监听1000端口的对象 soc=listen.accept();//当有socket连接所监听的端口时,连接上该socket System.out.println("*******************************************"); System.out.println("serverok"); System.out.println("*******************************************"); System.out.println(""); isr=newInputStreamReader(soc.getInputStream());//创建一个来自套接字soc的可读输入流 bf=newBufferedReader(isr);//把soc的可读输入流作为参数创建一个BufferedReader message=bf.readLine();//以每行为单位读取从客户端发来的数据 System.out.println("Socket:"+soc);//显示出发送方的IP地址和端口号 System.out.println("Receivethemessagefrom:"+message);//显示接收到的数据 System.out.println("");System.out.println("*******************************************"); isr.close();//关闭输入流isr bf.close();//关闭字符流bf soc.close();//关闭Socket套接字 } catch(Exceptione)//异常处理 { System.out.println("Error:"+e); } }}SendTCP:import.*;importjava.io.*;publicclassSendTCP//发送TCP数据包的服务端程序{ publicstaticvoidmain(String[]args)throwsIOException { if(args.length!=4) { System.out.println("命令行的输入格式有误,请按照以下格式重新输入!"); System.out.println("源IP地址源端口目的IP地址目的端口"); System.exit(0); } Stringsource_ip=args[0]; intsource_port=Integer.parseInt(args[1]); Stringdest_ip=args[2]; intdest_port=Integer.parseInt(args[3]); if(dest_port!=10000) { System.out.println("请保持目的端口为10000!"); System.exit(0); } OutputStreamos=null;//定义一个输出流PrintStreamps=null;//定义一个可写流 BufferedReaderbf=null;//定义一个BufferedReader类型的读内容的引用 Stringmessage="Thisismyhomeworkofnetwork!"; Socketsoc=null;//定义Socket的应用,用于套接字连接 try{ soc=newSocket(dest_ip,dest_port); System.out.println();bf=newBufferedReader(newInputStreamReader(System.in));//把soc的可读输入流作为参数创建一个BufferedReaderSystem.out.print("Pleaseinputthemessage:");message=bf.readLine(); os=soc.getOutputStream();/创建一个来自套接字soc的可读输出流 ps=newPrintStream(os); ps.prin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数据管理及备份服务承诺保证函8篇
- 品质管理准则承诺函7篇
- 超低能耗住宅承诺书7篇
- 建筑智能化系统集成方案手册
- 质量管理体系文件模板全流程控制
- 人工智能在自动驾驶技术中的应用解决方案
- 团队协作项目管理模板及其在多项目环境中的应用
- 2023成人高考计量经济核心考题及标准答案
- 菏泽医专2024单招综评模拟题及答案 零基础也能快速上手
- 肿瘤放疗2024春招面试100题附逐字稿答案
- 2024年广东省中学生生物学联赛试卷(含答案)
- 基于STM32单片机车载儿童滞留检测系统设计
- mini-cex的测评内容人文关怀
- 新中式茶饮培训课件
- 外墙改造可行性报告
- 内科学李晓晖 - 河南大学第一附属医院-综合-
- 整本书阅读十万个为什么分享直播课
- 2023年考研考博-考博英语-中国科学技术大学考试历年真题摘选含答案解析
- 艺术课程标准(2022年版)
- 高考地理二轮复习+高三地理答题中的时空尺度思维+课件
- 高校教师培训高等教育法规概论课件
评论
0/150
提交评论