| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3945 人关注过本帖, 1 人收藏
标题:请指点VFP如何通过域名获取IP?在网上下载的程序结果是0.0.0.0,请指点多谢 ...
只看楼主 加入收藏
YTZN
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2012-10-7
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:97 
请指点VFP如何通过域名获取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 0x0202
uHostName='www.'

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(uHostName+0h0D0A+LEFT(uIpStr,LEN(uIpStr)-1))
搜索更多相关主题的帖子: 网上 如何 
2012-10-07 09:26
YTZN
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2012-10-7
收藏
得分:0 
通过域名获取IP的好处是:在服务器(或需访问的电脑)上自动启动花生壳,在互联网上其他电脑通过VFP编的程序自动通过域名获取的服务器IP地址链接服务器,这样就不怕服务器每天开关引起的公网IP变化。
2012-10-07 09:54
YTZN
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2012-10-7
收藏
得分:0 
这样就不用申请固定公网IP,据说申请公网IP很贵的
2012-10-07 10:01
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

授人以渔,不授人以鱼。
2012-10-07 22:15
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:20 
程序代码:
? GetIP("www.163.com")

FUNCTION GetIP(tcDomainName)
    LOCAL lnHandle, lcBuffer, lnPos1, lnPos2
    LOCAL lcIP
   
    RUN "PING -n 1 &tcDomainName > IP.TXT"
   
    lcIP = ""
    lnHandle = FOPEN("IP.TXT")
    IF lnHandle >= 0
        DO WHILE !FEOF(lnHandle)
            lcBuffer = FGETS(lnHandle)
            lnPos1 = AT("[", lcBuffer, 1)
            IF (lnPos1 > 0)
                lnPos2 = AT("]", lcBuffer, 1)
                lcIP = SUBSTR(lcBuffer, lnPos1 + 1, lnPos2 - lnPos1 - 1)
                EXIT
            ENDIF
        ENDDO
        FCLOSE(lnHandle)
        DELETE FILE IP.TXT
    ELSE
        MESSAGEBOX("Ping 数据包找不到", 64)
    ENDIF
   
    RETURN lcIP
   
ENDFUNC

授人以渔,不授人以鱼。
2012-10-08 04:00
lygcw9603
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:233
专家分:357
注 册:2006-8-27
收藏
得分:0 
以下是引用TonyDeng在2012-10-8 04:00:29的发言:

 
? GetIP("www.)
 
FUNCTION GetIP(tcDomainName)
    LOCAL lnHandle, lcBuffer, lnPos1, lnPos2
    LOCAL lcIP
   
    RUN "PING -n 1 &tcDomainName > IP.TXT"
   
    lcIP = ""
    lnHandle = FOPEN("IP.TXT")
    IF lnHandle >= 0
        DO WHILE !FEOF(lnHandle)
            lcBuffer = FGETS(lnHandle)
            lnPos1 = AT("[", lcBuffer, 1)
            IF (lnPos1 > 0)
                lnPos2 = AT("]", lcBuffer, 1)
                lcIP = SUBSTR(lcBuffer, lnPos1 + 1, lnPos2 - lnPos1 - 1)
                EXIT
            ENDIF
        ENDDO
        FCLOSE(lnHandle)
        DELETE FILE IP.TXT
    ELSE
        MESSAGEBOX("Ping 数据包找不到", 64)
    ENDIF
   
    RETURN lcIP
   
ENDFUNC
如果只是获取IP地址,可用STREXTRACT( )函数。
2012-10-08 09:10
taohua300
Rank: 12Rank: 12Rank: 12
来 自:光
等 级:贵宾
威 望:14
帖 子:1636
专家分:3906
注 册:2009-3-11
收藏
得分:0 
楼主运行这个代码
返回值 ret 是多少 ?

个性太多,无法显示
2012-10-08 09:15
taohua300
Rank: 12Rank: 12Rank: 12
来 自:光
等 级:贵宾
威 望:14
帖 子:1636
专家分:3906
注 册:2009-3-11
收藏
得分:0 
代码在我这里能正常运行

个性太多,无法显示
2012-10-08 09:17
lygcw9603
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:233
专家分:357
注 册:2006-8-27
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2012-10-08 09:38
YTZN
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2012-10-7
收藏
得分:0 
感谢版主及各位的回复及关注!版主的程序还没看懂,我的水平太差须慢慢消化。
我执行的时候最后一行出现这个错误,如图:
图片附件: 游客没有浏览图片的权限,请 登录注册


不知其中的0h0D0A是什么,如将其删除变成:MESSAGEBOX(uHostName+LEFT(uIpStr,LEN(uIpStr)-1))
运行结果是:
图片附件: 游客没有浏览图片的权限,请 登录注册





不知

QQ截图20121008111735.png (12.72 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2012-10-08 11:38
快速回复:请指点VFP如何通过域名获取IP?在网上下载的程序结果是0.0.0.0,请指点 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035550 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved