《网络协议及编程》实验指导书
实验一 获取本机主机名和ip地址
实验目的:编程获取本机主机名和IP地址。 实验要求:每人独立完成。 实验说明:
使用Vc++编程,首先要建立一个工程。工程类型有很多种,此处建立的工
程类型是win32
console application,这种类型的工程建立的是dos界面的程序。此外我们以后要
用到的工程
类型还有MFC appwizard(exe),这种类型的工程建立的是windos界面的程序。 工程建好后,开始编程序。源文件要通过“fileview”下的“source files”加
入,方法是
点右键,会弹出一个菜单,选“添加文件到目录”。 在使用socket编程时,每次都要把库ws2_32.lib加入,方法是点“工程”“设
置”“链接”。
实验参考步骤:
1. 新建工程。工程类型选“win32 console application”,输入工程名称,
选取工程存储位置,“下一步”,“一个空工程”,完成。
2. 选取“FileView”,点“Source Files”,按鼠标右键,选取“添加文件
到目录”,输入文件名,点“确定”。
3. 开始编程。
#include
hostent* pHostent = gethostbyname(hostname); if (pHostent==NULL) {
WORD wVersionRequested = MAKEWORD(1, 1); WSADATA wsaData;
if (WSAStartup(wVersionRequested, &wsaData)) { }
char hostname[256];
int res = gethostname(hostname, sizeof(hostname)); if (res != 0) { }
printf(\, hostname);
printf(\, WSAGetLastError()); return -1;
printf(\, WSAGetLastError()); return -1;
}
}
printf(\, WSAGetLastError()); return -1;
hostent& he = *pHostent; sockaddr_in sa;
for (int nAdapter=0; he.h_addr_list[nAdapter]; nAdapter++) { }
WSACleanup(); return 0;
memcpy ( &sa.sin_addr.s_addr, he.h_addr_list[nAdapter],he.h_length);
printf(\, inet_ntoa(sa.sin_addr)); // display as string
4. 5.
编译。在“工程“,”设置”,“链接”里,把ws2_32.lib 加入。 编译执行。完成。