VFP怎样调用WSOCK32.DLL的gethostbyname()函数获得IP地址

whysodifficult 2011-02-16 11:06:54
我想要通过下面的代码取得域名的IP地址,但是得到的IP地址是0.0.0.0,到底是哪里出错了。
DECLARE INTEGER gethostbyname in WSOCK32 String
DECLARE INTEGER WSAStartup IN ws2_32 INTEGER,STRING @
DECLARE INTEGER WSACleanup IN ws2_32
#DEFINE WSADATA_SIZE 398
#DEFINE WS_VERSION 0x202
uHostName='www.163.com'
cWSADATA=Repli(Chr(0),WSADATA_SIZE)
WSAStartup(WS_VERSION, @cWSADATA)
ret=gethostbyname(uHostName)
n=AT(uHostName,SYS(2600,ret,WSADATA_SIZE))
IPDATA=SUBSTR(SYS(2600,ret,WSADATA_SIZE),n-4,4)
uIpStr=''
FOR i=1 TO 4
uIpStr=uIpStr+ALLTRIM(STR(ASC(SUBSTR(IPDATA,i,1))))+'.'
ENDF
WSACleanup()
MESSAGEBOX('IP地址:'+LEFT(uIpStr,LEN(uIpStr)-1))
...全文
127 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
taohua300 2011-02-17
  • 打赏
  • 举报
回复
我是电信的网,用的是山东联通的DNS服务器,ping结果是123.132.254.15,程序运行结果第一次为60.210.18.169,以后多次运行的结果在这两个地址在这两个地址徘徊

说明你的程序应该没有问题
taohua300 2011-02-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 apple_8180 的回复:]
以上代码我可以转成IP,不过获得的IP与ping www.163.com得出的IP不一样。
木瓜的 MyFll.Fll 中的DomainToIP()函数返回的IP与PING得出的一样,看来上面这段代码有点问题。
[/Quote]

各大网站一般都有多个IP,所以得出的结果可能不太一样,即使使用ping命令,多次ping的结果也有可能是不一样的,这要看DNS服务器把域名解析成哪个IP地址
十豆三 2011-02-17
  • 打赏
  • 举报
回复
以上代码我可以转成IP,不过获得的IP与ping www.163.com得出的IP不一样。
木瓜的 MyFll.Fll 中的DomainToIP()函数返回的IP与PING得出的一样,看来上面这段代码有点问题。

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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