ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:97.58KB ,
资源ID:15396927      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-15396927.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验一Winsock编程接口实验.docx)为本站会员(b****7)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

实验一Winsock编程接口实验.docx

1、实验一Winsock编程接口实验实验一-Winsock编程接口实验网络程序设计实验报告 实验名称:winsock编程接口实验_实验类型:验证型实验_ _指导教师:贾浩 _专业班级: 信安0904_ 姓 名:_谌军_学 号:_20092036_电子邮件:_448149700_实验地点:_东六a座4-17_实 验 日 期: 2012 年 3 月 11 日实验成绩:_2、要得到本地主机的所有适配器的IP地址,子网掩码,默认网关,MAC地址等信息,主要是对GetAdaptersInfo()函数的理解和应用。该函数可以获取本地主机的所有适配器信息,并保存在pAdapterInfo所指向的链表中。函数原型

2、为:DWORD GetAdaptersInfo( PIP_ADAPTER_INFO pAdapterInfo, / buffer to receive data PULONG pOutBufLen / size of data returned);IP_ADAPTER_INFO的定义如下:typedef struct _IP_ADAPTER_INFO struct _IP_ADAPTER_INFO* Next; DWORD ComboIndex; char AdapterNameMAX_ADAPTER_NAME_LENGTH + 4; char DescriptionMAX_ADAPTER_D

3、ESCRIPTION_LENGTH + 4; UINT AddressLength; BYTE AddressMAX_ADAPTER_ADDRESS_LENGTH; DWORD Index; UINT Type; UINT DhcpEnabled; PIP_ADDR_STRING CurrentIpAddress; IP_ADDR_STRING IpAddressList; IP_ADDR_STRING GatewayList; IP_ADDR_STRING DhcpServer; BOOL HaveWins; IP_ADDR_STRING PrimaryWinsServer; IP_ADDR

4、_STRING SecondaryWinsServer; time_t LeaseObtained; time_t LeaseExpires; IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;通过调用该函数就可以得到所有适配器信息。流程图如下:三、实验过程(包含实验结果)1.实验步骤如下:(1)建立一个C+程序工程,并建立同名的C+文件;(2)将教材上获取本机IP等信息代码输入;(3)将:gethostname(szHost, 256)改为cout”请输入主机名”szHost;(4)为主函数中的所有代码加上while循环,从而实验多次域名的输入。(5)编译,调试,运行程序

5、,检验程序运行结果。(6)思考,分析实验结果,编写实验报告。 实验编译及链接错误:无。 解决方案:无。 实验结果:如下截图结果2.实验步骤如下:(1)建立名为LocalHostInfo的一个C+程序工程,并建立同名的文件;(2)将教材上获取本机ip地址,子网掩码,网关ip和本机MAC地址代码录入;(3)编译,调试,运行程序,检验程序运行结果。(4)思考,分析实验结果,编写实验报告。 实验编译及链接错误:无。 解决方案:无。 实验结果:如下截图为运行程序后的结果:四、讨论与分析1)Winsock初始化的作用是什么?答:作用是为了式程序能够使用一些底层的API函数,用来完成功能2)给出GetAda

6、ptersInfo()函数的正确使用方法DWORD GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo, /指向一个缓冲区,用来取得IP_ADAPTER_INFO 结构的列表PULONG pOutBufLen /用来指定上面的缓冲区的大小,如果大小不够,此参数返回所需大小)/函数调用成功返回ERROR_SUCCESS3)域名解析时出现域名对应多个IP,请解释原因。因为一台主机上可能会对应多个IP地址如(笔记本上的无线网卡上对应了一个IP地址而在有线上也对应了一个IP地址)五、实验者自评(从实验设计、实验过程、对实验知识点的理解上给出客观公正的自我评价)这

7、次实验使我对书本上的知识有了更深的理解,对于这些重要的API函数的调用也有了一个更加明确的理解,除此之外,我还对套接字、端口、IP地址之间的关系有了初步的理解,在以后的实验中,我会更加对书上的代码进行研究,充分的理解其中的关键要素!六、附录:关键代码(给出适当注释,可读性高)#include #include #pragma comment(lib,WS2_32)class CInitSock public: CInitSock(BYTE minorVer = 2, BYTE majorVer = 2) / 初始化Winsock WSADATA wsaData; WORD sockVersio

8、n = MAKEWORD(minorVer, majorVer); if(:WSAStartup(sockVersion, &wsaData) != 0) exit(0);/初始化失败,退出程序 CInitSock() :WSACleanup();/释放Winsock资源 ;int main(int argc,char *argv) CInitSock initSock; char szHost256; while(printf(输入域名:) / 通过域名得到地址信息 scanf(%s,&szHost); if(szHost=0) break; hostent *pHost = :gethos

9、tbyname(szHost); / 打印出所有IP地址 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地址:%sn, szIp); printf(n); return 0;#include #include #include Iphlpapi.h#pragma comment(lib, Iphlpap

10、i.lib)#pragma comment(lib, WS2_32.lib)/ 全局数据u_char g_ucLocalMac6; / 本地MAC地址DWORD g_dwGatewayIP; / 网关IP地址/DWORD g_dwGatewayIP1;DWORD g_dwLocalIP; / 本地IP地址DWORD g_dwMask; / 子网掩码char *szAdapterName;char *szAdapterDescription;BOOL GetGlobalData() PIP_ADAPTER_INFO pAdapterInfo = NULL; ULONG ulLen = 0; /

11、为适配器结构申请内存 :GetAdaptersInfo(pAdapterInfo,&ulLen); pAdapterInfo = (PIP_ADAPTER_INFO):GlobalAlloc(GPTR, ulLen); / 取得本地适配器结构信息 if(:GetAdaptersInfo(pAdapterInfo,&ulLen) = ERROR_SUCCESS) if(pAdapterInfo != NULL) memcpy(g_ucLocalMac, pAdapterInfo-Address, 6); szAdapterName=pAdapterInfo-AdapterName; szAdap

12、terDescription=pAdapterInfo-Description; g_dwGatewayIP = :inet_addr(pAdapterInfo-GatewayList.IpAddress.String); g_dwLocalIP = :inet_addr(pAdapterInfo-IpAddressList.IpAddress.String); g_dwMask = :inet_addr(pAdapterInfo-IpAddressList.IpMask.String); g_dwGatewayIP1=:inet_addr(pAdapterInfo-Next-IpAddres

13、sList.IpAddress.String); printf( n - 本地主机信息 -nn); in_addr in; in.S_un.S_addr = g_dwLocalIP; in_addr in1; in1.S_un .S_addr =g_dwGatewayIP1; printf( IP Address : %s n, :inet_ntoa(in); in.S_un.S_addr = g_dwMask; printf( Subnet Mask : %s n, :inet_ntoa(in); in.S_un.S_addr = g_dwGatewayIP; printf( Default

14、 Gateway : %s n, :inet_ntoa(in); u_char *p = g_ucLocalMac; printf( MAC Address : %02X-%02X-%02X-%02X-%02X-%02X n, p0, p1, p2, p3, p4, p5); printf(适配器名称:%s n,szAdapterName); printf(适配器描述: %s n,szAdapterDescription); / printf(有线适配器ip地址:%s n,inet_ntoa(in1); printf( n n ); return TRUE;int main() / 获取全局数据 GetGlobalData(); getchar(); return 0;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2