网络程序设计实验报告-Winsock编程接口实验.docx
-
资源ID:26956815
资源大小:12.89KB
全文页数:5页
- 资源格式: DOCX
下载积分:30金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
网络程序设计实验报告-Winsock编程接口实验.docx
网络程序设计实验报告-Winsock编程接口实验 网络程序设计 实验报告 实验名称: Winsock编程接口实验 实验类型:_验证型实验_ _ 指导教师:_ 专业班级:_ 姓名:_ 学号:_ 电子邮件:_ 实验地点:_ _ 实验日期2022 年 3 月29 日 实验成绩:_ 一、实验目的 掌握Winsock的启动和初始化; 掌握gethostname(),gethostbyname(),GetAdaptersInfo()等信息查询函数的使用。 二、实验设计 由实验内容可以知道: 1、编写程序能同时实现对多个域名的解析。比如在控制台输入:getip ,能输出 和 对应的IP地址列表。 2、编写程序获取并输出本地主机的所有适配器的IP地址,子网掩码,默认网关,MAC 地址。 首先要了解一些基本的知识gethostname(),gethostbyname(),GetAdaptersInfo()等信息查询函数的基本知识gethostbyname()返回对应于给定主机名的包含主机名字和地址信息的hostent结构指针。结构的声明与gethostaddr()中一致。 之后要根据内容画出函数流程图 三、实验过程(包含实验结果) 1.在实验过程中调用GetAdaptersInfo()时,出现了undeclared identifier的报错,原因是没有包含其头文件,之后进行一些修改解决了问题. 2.实验结果 3.选择查看本机信息 四、讨论与分析 1Winsock初始化的作用是什么? 答:使用winsock初始化可加载winsock编程的动态链接库。 2给出GetAdaptersInfo()函数的正确使用方法。 GetAdaptersInfo 函数使用方法: 1.包含头文件IpHlpApi.h,其库文件为IpHlpApi.lib(已将安装SDK,并将其连接至VC) 2.声明一个IP_ADAPTER_INFO 结构指针变量pAdapterInfo,一个ULONG变量ulOutBufLen。这些变量作为参数传递给GetAdaptersInfo 函数; 3. 为结构分配内存; 4. 第一次调用GetAdaptersInfo 获取适当的ulOutBufLen 变量大小; 5. 第二次调用传递pAdapterInfo,ulOutBufLen 作为参数, 调用成功时返回网卡信息,失败时返回错误信息。 3域名解析时出现域名对应多个IP,请解释原因。 大型网站具有多个IP,这是因为其访问量大,使用多个IP保持负载均衡。所以要使用多个IP同时也可以提高系统吞吐量 五、实验者自评 刚开始的时候对Winsock编程不是很了解,然后看了书中的知识后大概了解了许多关于Winsock编程基本接口的知识,而且在实验过程中有许多的问题,例如最后显示本机IP 地址的时候还需要将debug中的应用程序放入到c盘中,之后尝试了好多次程序就可以运行了,不过,最后终于是写好了,还有些关于套接字的程序书中也有参考的,可以仿照那个去修改一下自己的代码,看看自己的有哪些不足之处,程序写的好的要求是尽量减小系统的利用率,增大系统吞吐量,可以使系统有更高的运行效率。 这次实验是一个简单些的验证型实验,但是对于Winsock编程是一些基础知识,只要先打好了基础知识才可以对于后面的实验能运用自如,所以,以后有时间的时候也要去看书多了解关于这方面的知识。实验设计的时候还是比较简单的,就是过程有一点繁琐啦! 六、附录:关键代码 while(argc>1) 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");