如果是本及机的话,就使用windows的API啊
#include "winsock.h"
WORD wVersionRequested
WSADATA wsaData
char name[255]
char* ip
PHOSTENT hostinfo
wVersionRequested = MAKEWORD( 2, 0 )
if ( WSAStartup( wVersionRequested, &wsaData ) == 0 )
{
if( gethostname ( name, sizeof(name)) == 0)
{
if((hostinfo = gethostbyname(name)) != NULL)
{
ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list)
}
}
// ip is ready
WSACleanup( )
}
这里的代码可以打印出电脑默认的DNS服务器
参考资料:http://blog.csdn.net/shimazhuge/article/details/8949508
#pragma warning(disable:4996)#include <stdio.h>
#include <WinSock2.h>
#include <iphlpapi.h>
#pragma comment(lib, "IPHLPAPI.lib")
#pragma comment(lib, "ws2_32.lib")
int main() // 获取本地主机名、域名和DNS服务器信息
{
// 声明变量
FIXED_INFO * FixedInfo // 定义保存本地计算机网络参数信息的结构体指针
ULONG ulOutBufLen // 保存获取到的本地计算机网络参数信息结构体链表的长度
DWORD dwRetVal // 调用GetNetworkParams()函数的返回值
IP_ADDR_STRING * pIPAddr // 保存所有DNS服务器的IP地址列表
FixedInfo = (FIXED_INFO *)GlobalAlloc(GPTR, sizeof(FIXED_INFO)) // 为FixedInfo结构体分配内存空间
ulOutBufLen = sizeof(FIXED_INFO) // 初始化ulOutBufLen变量值
// 第1次调用GetNetworkParams()函数,获取返回结果的大小到ulOutBufLen中
if (ERROR_BUFFER_OVERFLOW == GetNetworkParams(FixedInfo, &ulOutBufLen))
{
GlobalFree(FixedInfo)
FixedInfo = (FIXED_INFO *)GlobalAlloc(GPTR, ulOutBufLen)
}
// 第2次调用GetNetworkParams()函数,以前面获取的ulOutBufLen作为参数,
if (dwRetVal = GetNetworkParams(FixedInfo, &ulOutBufLen) != ERROR_SUCCESS)
{
printf("调用GetNetworkParams()函数失败。返回值: %08x\n", dwRetVal)
}
else
{
printf("\nDNS服务器列表:\n")
printf("%s\n", FixedInfo->DnsServerList.IpAddress.String)
pIPAddr = FixedInfo->DnsServerList.Next
while (pIPAddr)
{
printf("\t%s\n", pIPAddr->IpAddress.String)
pIPAddr = pIPAddr->Next
}
}
printf("按下回车键结束\n")
getchar()
return 0
}
struct in_addr addrhostent *pHost = ::gethostbyname("localhost")//在此写入你自己电脑主机名字
switch (pHost->h_addrtype) {
case AF_INET:
printf("internet网络地址类型(AF_INET)\n")
break
case AF_INET6:
printf("internet网络地址类型(AF_INET)\n")
break
case AF_NETBIOS:
printf("netbios网络地址类型(AF_NETBIOS)\n")
break
default:
printf("其它地址类型 %d\n", pHost->h_addrtype)
break
}
printf("\t地址长度: %d(字节)\n", pHost->h_length)
addr.s_addr = *(u_long *) pHost->h_addr_list[0]
printf("\t第一个IP地址为: %s\n", inet_ntoa(addr))
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)