您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页东南大学计算机网络实验一

东南大学计算机网络实验一

来源:五一七教育网
东南大学自动化学院 实 验 报 告 课程名称: 信息通信网络概论 第1次实验 实验名称: TCP/IP协议与Socket编程认识实验 院 (系): 自动化 专 业: 自动化 姓 名: 施恺然 学 号: 08013425 实 验 室: 金智楼 实验组别: 无 同组人员: 无 实验时间:2015年 12 月 6日 评定成绩: 审阅教师: 1 目 录 一.实验目的和要求…………………………………………………3 二.实验原理…………………………………………………………3 三.实验方案与实验步骤……………………………………………4 四.实验设备与器材配置……………………………………………4五.实验记录…………………………………………………………4 六. 实验总结…………………………………………………………5 七. 思考题或讨论题…………………………………………………7(要求:给出一级目录,宋体加粗,四号字,1.5倍行距。) 2 (报告正文部分的格式): (要求:正文部分一律用五号字,宋体,单倍行距。一级大标题靠左,四号,宋体,加粗。二级大标题靠左,小四,宋体,不加粗。) 实验报告内容: 一. 实验目的和要求 实验目的: 1) 学习使用MFC制作界面 2) 学会利用已有函数添加进入MFC内容中 3) 了解学习DNS域名解析协议的机制 实验要求 1)使用MFC制作一个界面 2)将已给函数的语法与原理解释清楚 3)将已给函数中的特定固有函数解释清楚 二. 实验原理 1)MFC的制作: 微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。 2)Gethostbyaddr函数 Gethostbyaddr函数的基本作用就是通过已知的域名获得该域名对应的IP地址。其原理就是DNS域名解析协议。函数返回对应于给定地址的包含主机名字和地址信息的hostent结构指针。也就是说返回的是一个包含关于给定地址详细信息的指针,通过解析指针内容可以获得想要主机信息。 3)Gethostbyname函数 Gethostbyname函数也是通过DNS服务的获得IP对应的域名。其返回对应于给定主机名的包含主机名字和地址信息的hostent结构指针。可以发现该函数获得的返回信息与Gethostbyaddr函数返回信息是一样的。如果说上一个函数(Gethostbyaddr)使用了DNS协议通过域名寻找到相应的IP地址的话,该函数就是通过DNS服务发送IP地址直接请求相应的详细信息,较上一个函数少了一步通过域名请求IP地址的步骤。 4)inet_addr函数 inet_addr函数是一个格式转换函数。返回:若字符串有效则将字符串转换为32位二进制网络字节序的IPV4地址,否则为INADDR_NONE。 例:已有地址127.0.0.1转换为32位二进制地址为:inet_addr(127.0.0.1)会返回: 01111111.00000000.00000000.00000001地址。 5)inet_ntoa函数 inet_ntoa函数 3 inet_ntoa函数同上一个函数一样也是格式转换函数,与inet_addr函数不同,本函数是将二进制地址转换成字符串地址。 6)WSAStartup函数 使用Socket的程序在使用Socket之前必须调用WSAStartup函数。 7)WSACleanup函数 应用程序或DLL在使用Windows Sockets服务之前必须要进行一次成功的WSAStartup()调用.当它完成了Windows Sockets的使用后,应用程序或DLL必须调用WSACleanup()将其从Windows Sockets的实现中注销,并且该实现释放为应用程序或DLL分配的任何资源。 三. 实验方案与实验步骤 1) 建立MFC界面 鉴于MFC的制作是体力型劳动,就不一一讲解建立过程。 2) 先在MFC的URL文本框中输入域名,点击确定。然后下方文本框会出现相对应的IP地址。 3)再在IP地址文本框中输入刚才得到的IP地址,点击确定。会获得响应域名。 四. 实验设备与器材配置 1) PC机一台 2) VC 6.0编译工具 五. 实验记录(自行设计记录方式) 当输入cc.seu.edu.cn时返回58.192.114.222的IP地址;将地址复制粘贴到另一个输入栏中,返回相同的域名。 4 当输入www.seu.edu.cn时输出121.248.63.91的IP地址。地址至复制到粘贴到另一个输入栏中,返回不相同的域名:wpidc91.seu.edu.cn。 将wpidc91.seu.edu.cn重新输入URL中,获得的IP地址与www.seu.edu.cn是相同。 从结果看:不同域名的对应同一个IP,不同IP地址会有不同的域名。 六. 实验总结(包括实验数据处理、实验结果分析讨论等) 上诉的现象可以从程序中得到解释。 程序解析: (这是从域名获得IP地址的程序) if(WSAStartup(0X0101,&wsaData)) MessageBox(\"Could not load windows sockets dll.\首先调用windows sockets服务,如果服务调用不可用会返回: “Could not load windows sockets dll.” 的文本框。如果成功调用则会继续下述过程。 else { UpdateData(TRUE); MFC下载文本框数据。 lpHostEnt=gethostbyname(m_Url1); 下载文本数据名为m_Url1,m_Url1是域名信息。使用gethostbyname将hostent结构指针信息从服务器上全部下载下来。hostent结构指针中有大量有关主机的信息。如果没有加载成功,lpHostEnt将会置为零。 if(!lpHostEnt) MessageBox(\"Could not get ip address.\ else 为零则会跳出文本框 “Could not get ip address.” 非零则会执行下述操作 { m_Ip1=inet_ntoa(*(LPIN_ADDR)*(lpHostEnt->h_addr_list)); UpdateData(FALSE); } 5 } m_Ip1为取得的IP地址,程序中lpHostEnt->h_addr_list为将lpHostEnt中的域名列表取出,*(LPIN_ADDR)是将取出列表强制传换格式以供inet_ntoa函数转换为平时可读的地址。 (h_addr_list:应该以空指针结尾的主机地址列表,返回的地址是以网络顺序排列的) UpdateData(FALSE)以降得出信息上载到MFC界面中 WSACleanup();结束服务,释放资源。 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ (这是从IP获得域名的程序) 前述加载程序不一一赘述 UpdateData(TRUE); MFC下载文本框数据。 dwIPAddr=inet_addr(m_Ip2); 将IP地址转换为32位个数,并赋予dwIPAddr if(dwIPAddr==INADDR_NONE) MessageBox(\"Invalid Internet Address.\ else 如果dwIPAddr是十进制格式255.255.255.255; 二进制格式:11111111.11111111.11111111.11111111;这是计算机广播地址,不给予下续程序进行。 { lpHostEnt=gethostbyaddr((LPSTR)&dwIPAddr,4,PF_INET); 下载数据名为dwIPAddr,dwIPAddr是IP二进制地址信息。使用gethostbyaddr将hostent结构指针信息从服务器上全部下载下来。hostent结构指针中有大量有关主机的信息。如果没有加载成功,lpHostEnt将会置为零。 if(!lpHostEnt) MessageBox(\"Could not get host name.\为零则会跳出文本框 “Could not get ip address.” 非零则会执行下述操作 else { m_Url2=lpHostEnt->h_name; UpdateData(FALSE); 将lpHostEnt的域名信息取出赋予m_Url2,h_name是正规的主机名字(PC)。一个IP有多个域名也就是这里的原因。返回的h_name不一定是平时用的域名,也就是一个IP可以对应多个域名。 } } WSACleanup();结束服务,释放资源。 6 七. 思考题或讨论题 1.WinInet有什么作用? 答:wininet提供了多种协议,比如http,ftp。平时还是winhttp,它只提供http协议,和wininet的功能重复,但是更稳定。 2.结合本次实验,谈谈使用MFC WinInet类有哪些优点? 答:内置函数丰富且成熟。协议内容已经封装到函数中,也就是不用调试协议内容,就可以通过已有函数进行程序编写,大大方便程序的设计。 7

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

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务