如何编程获取DNS地址?

binbin 2003-11-18 07:40:09
要求能获取当前连接的DNS地址,如果是拨号上网则获取ISP提供的DNS地址,如果是局域网上网则获取DHCP服务器提供的或本机固定设置的DNS,总之获得当前机器正在使用能正常连接的DNS设置.
分不够可以再加.
...全文
414 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
COKING 2003-11-22
动态的在注册表里也有的!是OS自己写进去的!
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Linkage 得到InterFace

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces 对应上面的InterFace

在DhcpNameServer里
回复
binbin 2003-11-21
还是读写注册表?
达不到我的要求啊.要求能在DHCP,拨号等动态IP/DNS的网络环境下正常工作.
回复
HUANG_JH 2003-11-21
动态改变/添加网络设置中的 TCP/IP 的 DNS 地址

例如,把 DNS Server的地址添加为192.0.0.1和192.1.1.0,可调用:

SetTCPIPDNSAddresses('192.0.0.1 192.1.1.0') ;

// 各地址之间用一个空格隔开


1. SetTCPIPDNSAddresses 定义如下:


procedure SetTCPIPDNSAddresses( sIPs : string );

begin

//

// if using Windows NT

//

SaveStringToRegistry_LOCAL_MACHINE(

'SYSTEM\CurrentControlSet' +

'\Services\Tcpip\Parameters'


'NameServer'


sIPs );


//

// if using Windows 95

//

SaveStringToRegistry_LOCAL_MACHINE(

'SYSTEM\CurrentControlSet' +

'\Services\VxD\MSTCP'


'NameServer'


sIPs );

end;


2. 其中 SaveStringToRegistry_LOCAL_MACHINE 定义:

uses Registry;


procedure SaveStringToRegistry_LOCAL_MACHINE(

sKey

sItem

sVal : string );

var

reg : TRegIniFile;

begin

reg := TRegIniFile.Create( '' );

reg.RootKey := HKEY_LOCAL_MACHINE;

reg.WriteString( sKey

sItem

sVal + #0 );

reg.Free;

end;
回复
叶子哟 2003-11-21
找找dns编程的书看看,不熟悉
回复
binbin 2003-11-21
可惜msdn上没有这个函数的帮助,unix下是有的,难道winsock没有相应的实现?
回复
annkie 2003-11-21
没事乱搜了一下,找到这个函数 getaddrinfo 不晓得你用了没有了?
看看msdn的帮助试试看。
回复
binbin 2003-11-21
这么多天来提前一次都不行!!!
"你提前的太频繁了"???
顶!!!
回复
binbin 2003-11-19
动态的呢?注册表里也会有吗?
回复
warton 2003-11-19
我只知道方面注册表里有记录,看过这方面的文章
回复
binbin 2003-11-18
winsock函数gethostbyname本身就应该会用到DNS,它是如何做的呢???
回复
binbin 2003-11-18
人呢?
回复
发帖
网络及通讯开发
创建于2007-08-02

1299

社区成员

C++ Builder 网络及通讯开发
申请成为版主
帖子事件
创建了帖子
2003-11-18 07:40
社区公告
暂无公告