预览加载中,请您耐心等待几秒...
在线预览结束,喜欢就下载吧,查找使用更方便
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
实验名称网络信息获取函数所属课程名称TCP/IP协议与网络编程实验时间2010/11/27实验地点信控系二机房学生姓名芦涛实验器材及环境PC机、VisualC++6.0实验目的在C++环境中编写代码,调用函数获取网络信息.
实验内容熟练掌握函数的调用及其编程;
调用函数获取网络信息,调试程序查看结果.
注释名条语句的含义.
撰写实验报告.实验步骤进入VisualC++6.0
创建一个空工程sy1
创建area.c文件
编写代码
#include<winsock2.h>
#include<stdio.h>
#include<stdlib.h>
#pragmacomment(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),&wsaData)!=0)//初始化环境
{
printf("环境初始化失败:\n");
return;
}
printf("----------------------------\n");
printf("--&&--获取主机名--&&--\n");
if(gethostname(hostname,sizeof(hostname))!=0)//获得主机名
{
printf("gethostname()函数调用失败,错误代号为:%u\n",WSAGetLastError());
return;
}
printf("主机名为:%s\n",hostname);//输出主机名
printf("----------------------------\n");
printf("--&&--获取主机信息--&&--\n");
pHostent=gethostbyname(hostname);//根据主机名获取主机信息
if(pHostent==NULL)
{
printf("gethostbyname()函数调用失败,错误代号为:%u\n",WSAGetLastError());
return;
}
else
{
printf("name:%s\naliases:%s\naddrtype:%d\nlength:%d\n",
pHostent->h_name,pHostent->h_aliases,
pHostent->h_addrtype,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\n",inet_ntoa(sa.sin_addr));
}
}
printf("----------------------------\n");
printf("--&&--获取协议信息--&&--\n");
pProtoent=getprotobyname("TCP");//根据协议名获取协议信息
if(pProtoent==NULL)
{
printf("getprotobyname()函数调用失败,错误代号为:%u\n",WSAGetLastError());
return;
}
else
printf("p_name:%s\np_proto:%d\n",pProtoent->p_name,pProtoent->p_proto);//输出协议名、协议号
for(n=0;pProtoent->p_aliases[n];n++)
printf("p_aliases:%s\n",pProtoent->p_aliases);//输出协议别名
printf("----------------------------\n");
WSACleanup();
}
6、编译程序
7、查看运行
8、出错分析实验总结获得主机名-----gethostname()
获得与套接口相连的远程协议-----getpeername()
获得套接口本地信息------getsoc