vc 怎样获得当前DNS 的IP

ghw8327482 2010-09-13 06:02:21
vc 怎样获得当前DNS 的IP,有vc代码实现,最好有源代码
...全文
148 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
myqoo 2010-09-14
  • 打赏
  • 举报
回复
最简单的方法用WMI查询吧。vc没做过,vb的话只需几行代码就可以了。
ctwoz 2010-09-14
  • 打赏
  • 举报
回复
学习…
ok1234567 2010-09-13
  • 打赏
  • 举报
回复


struct hostent * host_addr;
char sz[16]={0};
if((host_addr=gethostbyname(pszDomain))!= NULL)
{
in_addr s;
s.s_addr= *((int*)*host_addr->h_addr_list);
sprintf(sz,"%d.%d.%d.%d",s.S_un.S_un_b.s_b1,
s.S_un.S_un_b.s_b2,
s.S_un.S_un_b.s_b3,
s.S_un.S_un_b.s_b4);
}

Eleven 2010-09-13
  • 打赏
  • 举报
回复
MSDN上的例子程序。。。
Eleven 2010-09-13
  • 打赏
  • 举报
回复

/
// Link with IPHlpAPI.lib
//
#include <winsock2.h>
#include <iphlpapi.h>
#include <stdio.h>
#pragma comment(lib, "IPHlpAPI.lib")

#define MALLOC(x) HeapAlloc(GetProcessHeap(), 0, (x))
#define FREE(x) HeapFree(GetProcessHeap(), 0, (x))
/* Note: could also use malloc() and free() */

int __cdecl main()
{

FIXED_INFO *pFixedInfo;
ULONG ulOutBufLen;
DWORD dwRetVal;
IP_ADDR_STRING *pIPAddr;

pFixedInfo = (FIXED_INFO *) MALLOC(sizeof (FIXED_INFO));
if (pFixedInfo == NULL) {
printf("Error allocating memory needed to call GetNetworkParams\n");
return 1;
}
ulOutBufLen = sizeof (FIXED_INFO);

// Make an initial call to GetAdaptersInfo to get
// the necessary size into the ulOutBufLen variable
if (GetNetworkParams(pFixedInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) {
FREE(pFixedInfo);
pFixedInfo = (FIXED_INFO *) MALLOC(ulOutBufLen);
if (pFixedInfo == NULL) {
printf("Error allocating memory needed to call GetNetworkParams\n");
return 1;
}
}

if (dwRetVal = GetNetworkParams(pFixedInfo, &ulOutBufLen) == NO_ERROR) {

printf("Host Name: %s\n", pFixedInfo->HostName);
printf("Domain Name: %s\n", pFixedInfo->DomainName);

printf("DNS Servers:\n");
printf("\t%s\n", pFixedInfo->DnsServerList.IpAddress.String);

pIPAddr = pFixedInfo->DnsServerList.Next;
while (pIPAddr) {
printf("\t%s\n", pIPAddr->IpAddress.String);
pIPAddr = pIPAddr->Next;
}

printf("Node Type: ");
switch (pFixedInfo->NodeType) {
case BROADCAST_NODETYPE:
printf("Broadcast node\n");
break;
case PEER_TO_PEER_NODETYPE:
printf("Peer to Peer node\n");
break;
case MIXED_NODETYPE:
printf("Mixed node\n");
break;
case HYBRID_NODETYPE:
printf("Hybrid node\n");
break;
default:
printf("Unknown node type %0lx\n", pFixedInfo->NodeType);
break;
}

printf("DHCP scope name: %s\n", pFixedInfo->ScopeId);

if (pFixedInfo->EnableRouting)
printf("Routing: enabled\n");
else
printf("Routing: disabled\n");

if (pFixedInfo->EnableProxy)
printf("ARP proxy: enabled\n");
else
printf("ARP Proxy: disabled\n");

if (pFixedInfo->EnableDns)
printf("DNS: enabled\n");
else
printf("DNS: disabled\n");

} else {
printf("GetNetworkParams failed with error: %d\n", dwRetVal);
return 1;
}

if (pFixedInfo)
FREE(pFixedInfo);

return 0;
}

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧