《网络程序设计实验报告-Winsock编程接口实验.docx》由会员分享,可在线阅读,更多相关《网络程序设计实验报告-Winsock编程接口实验.docx(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、网络程序设计实验报告-Winsock编程接口实验 网络程序设计 实验报告 实验名称: Winsock编程接口实验 实验类型:_验证型实验_ _ 指导教师:_ 专业班级:_ 姓名:_ 学号:_ 电子邮件:_ 实验地点:_ _ 实验日期2022 年 3 月29 日 实验成绩:_ 一、实验目的 掌握Winsock的启动和初始化; 掌握gethostname(),gethostbyname(),GetAdaptersInfo()等信息查询函数的使用。 二、实验设计 由实验内容可以知道: 1、编写程序能同时实现对多个域名的解析。比如在控制台输入:getip ,能输出 和 对应的IP地址列表。 2、编写程
2、序获取并输出本地主机的所有适配器的IP地址,子网掩码,默认网关,MAC 地址。 首先要了解一些基本的知识gethostname(),gethostbyname(),GetAdaptersInfo()等信息查询函数的基本知识gethostbyname()返回对应于给定主机名的包含主机名字和地址信息的hostent结构指针。结构的声明与gethostaddr()中一致。 之后要根据内容画出函数流程图 三、实验过程(包含实验结果) 1.在实验过程中调用GetAdaptersInfo()时,出现了undeclared identifier的报错,原因是没有包含其头文件,之后进行一些修改解决了问题. 2
3、.实验结果 3.选择查看本机信息 四、讨论与分析 1Winsock初始化的作用是什么? 答:使用winsock初始化可加载winsock编程的动态链接库。 2给出GetAdaptersInfo()函数的正确使用方法。 GetAdaptersInfo 函数使用方法: 1.包含头文件IpHlpApi.h,其库文件为IpHlpApi.lib(已将安装SDK,并将其连接至VC) 2.声明一个IP_ADAPTER_INFO 结构指针变量pAdapterInfo,一个ULONG变量ulOutBufLen。这些变量作为参数传递给GetAdaptersInfo 函数; 3. 为结构分配内存; 4. 第一次调用
4、GetAdaptersInfo 获取适当的ulOutBufLen 变量大小; 5. 第二次调用传递pAdapterInfo,ulOutBufLen 作为参数, 调用成功时返回网卡信息,失败时返回错误信息。 3域名解析时出现域名对应多个IP,请解释原因。 大型网站具有多个IP,这是因为其访问量大,使用多个IP保持负载均衡。所以要使用多个IP同时也可以提高系统吞吐量 五、实验者自评 刚开始的时候对Winsock编程不是很了解,然后看了书中的知识后大概了解了许多关于Winsock编程基本接口的知识,而且在实验过程中有许多的问题,例如最后显示本机IP 地址的时候还需要将debug中的应用程序放入到c盘
5、中,之后尝试了好多次程序就可以运行了,不过,最后终于是写好了,还有些关于套接字的程序书中也有参考的,可以仿照那个去修改一下自己的代码,看看自己的有哪些不足之处,程序写的好的要求是尽量减小系统的利用率,增大系统吞吐量,可以使系统有更高的运行效率。 这次实验是一个简单些的验证型实验,但是对于Winsock编程是一些基础知识,只要先打好了基础知识才可以对于后面的实验能运用自如,所以,以后有时间的时候也要去看书多了解关于这方面的知识。实验设计的时候还是比较简单的,就是过程有一点繁琐啦! 六、附录:关键代码 while(argc1) hostent *pHost = :gethostbyname(*+argv); / 打印出所有IP地址 printf(jiexiyuming %s n,*argv); in_addr addr; for(int i = 0; ; i+) char *p = pHost-h_addr_listi; if(p = NULL) break; memcpy(&addr.S_un.S_addr, p, pHost-h_length); char *szIp = :inet_ntoa(addr); printf( 本机IP地址:%s n , szIp); argc-; printf(*n);
限制150内