资源描述:
《网络信息获取函数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验名称网络信息获取函数所属课程名称TCP/IP协议与网络编程实验时间2010/11/27实验地点信控系二机房学生姓名芦涛实验器材及环境PC机、VisualC++6.0实验目的1.在C++环境中编写代码,调用函数获取网络信息.实验内容1.熟练掌握函数的调用及其编程;2.调用函数获取网络信息,调试程序查看结果.3.注释名条语句的含义.4.撰写实验报告.实验步骤1、进入VisualC++6.02、创建一个空工程sy13、创建area.c文件4、编写代码#include#include#include#pragmacomment
2、(lib,"ws2_32.lib")voidmain(){WSADATAwsaData;//为了初始化环境而定义charhostname[256];//定义主机名intn;//定义整形制循环变量structhostent*pHostent;//定义指向hostent的结构体指针变量*pHostent,调用gethostname()时定义structsockaddr_insa;//定义指向sockaddr_in的结构体变量sa,调用gethostbyname()时定义structprotoent*pProtoent;if(WSAStartup(MAKEWORD(2,0),&wsaDat
3、a)!=0)//初始化环境{printf("环境初始化失败:");return;}printf("----------------------------");printf("--&&--获取主机名--&&--");if(gethostname(hostname,sizeof(hostname))!=0)//获得主机名{printf("gethostname()函数调用失败,错误代号为:%u",WSAGetLastError());return;}printf("主机名为:%s",hostname);//输出主机名printf("-----------------
4、-----------");printf("--&&--获取主机信息--&&--");pHostent=gethostbyname(hostname);//根据主机名获取主机信息if(pHostent==NULL){printf("gethostbyname()函数调用失败,错误代号为:%u",WSAGetLastError());return;}else{printf("name:%saliases:%saddrtype:%dlength:%d",pHostent->h_name,pHostent->h_aliases,pHostent->h_addrt
5、ype,pHostent->h_length);//输出主机名、主机别名、主机地址类型、IP地址长度for(n=0;pHostent->h_addr_list[n];n++)//返回所有的主机有IP地址{memcpy(&sa.sin_addr.s_addr,pHostent->h_addr_list[n],pHostent->h_length);printf("所有IP地址:%s",inet_ntoa(sa.sin_addr));}}printf("----------------------------");printf("--&&--获取协议信息--&&--");pP
6、rotoent=getprotobyname("TCP");//根据协议名获取协议信息if(pProtoent==NULL){printf("getprotobyname()函数调用失败,错误代号为:%u",WSAGetLastError());return;}elseprintf("p_name:%sp_proto:%d",pProtoent->p_name,pProtoent->p_proto);//输出协议名、协议号for(n=0;pProtoent->p_aliases[n];n++)printf("p_aliases:%s",pProtoent->p_ali
7、ases);//输出协议别名printf("----------------------------");WSACleanup();}6、编译程序7、查看运行8、出错分析实验总结1.获得主机名-----gethostname()2.获得与套接口相连的远程协议-----getpeername()3.获得套接口本地信息------getsockname()4.根据主机名获得主机信息-----gethostbyname()5.根据主机地址取得主机信息----