Winsock编程接口实验
实验目的
1.掌握Winsock的启动和初始化;
2.掌握gethostname(),gethostbyname(),GetAdaptersInfo()等信息查询函数的使用。
实验设计
1.编写程序能同时实现对多个域名的解析。比如在控制台输入:getip www.163.com www.swust.edu.cn, 能输出www.163.com和 www.swust.edu.cn对应的IP地址列表。
根据对题目的理解,我们需要实现对域名的解析,还要考虑到对多个域名的解析,这里我们可以用循环来做。
而对域名的解析需要用到gethostbyname()函数,其函数的原型为:
struct hostent *gethostbyname(const char *name);
name为指向主机名的指针,它一般由函数gethostname返回。
函数返回对应于给定主机名的包含主机名字和地址信息的hostent结构指针,该结构格式如下:
struct hostent{
char FAR* h_name;
char FAR* FAR* h_aliases;
short h_addrtype;
short h_length;
char FAR* FAR* h_addr_list;
};
因为主机名已知的,我们只需要调用此函数就可以得到对应的ip地址列表。
流程图如下:
\2. 编写程序获取并输出本地主机的所有适配器的IP地址,子网掩码,默认网关,MAC地址。
GetAdaptersInfo()该函数可以获取本地主机的所有适配器信息,并保存在pAdapterInfo所指向的链表中。
函数原型为:
DWORD GetAdaptersInfo(
IP_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 AdapterNam