PB9中通过网址(域名)获取IP的方法

原创 2011年10月27日 10:44:07

    将以下内容保存为本地文件n_cst_ip.sru,然后导入pbl中

$PBExportHeader$n_cst_ip.sru
forward
global type n_cst_ip from nonvisualobject
end type
type s_wsadata from structure within n_cst_ip
end type
type os_hostent from structure within n_cst_ip
end type
end forward

type s_wsadata from structure
    unsignedinteger        version
    unsignedinteger         highversion 
    character        discription[257]
    character        systemstatus[129]
    unsignedinteger        maxsockets
    unsignedinteger        maxupddg
    string         vendorinfo
end type

type os_hostent from structure
    long        hname
    long        haliases
    integer        haddrtype
    integer        hlen
    long        haddrlist
end type

global type n_cst_ip from nonvisualobject autoinstantiate
end type

type prototypes
FUNCTION  int  WSAStartup(  uint  UIVersionRequested,  ref  s_WSAData  lpWSAData  )    library  "wsock32.dll" 
FUNCTION  int  WSACleanup()  library  "wsock32.dll"  
FUNCTION  int  gethostname  (  ref  blob  name,  int  namelen  )  library  "wsock32.dll"  
FUNCTION  uLong  gethostbyname(ref blob  sHost)  Library  "wsock32.dll"  
FUNCTION  uLong  RtlMoveMemory(ref  os_hostent  hpvDest,long  hpvSource,long  cbCopy)  Library  "kernel32.dll"  
FUNCTION  uLong  RtlMoveMemory(ref  uLong  hpvDest,long  hpvSource,long  cbCopy)  Library  "kernel32.dll" 
end prototypes

forward prototypes
public function boolean of_getdnsip (string as_dns, ref string as_ipadress[])
end prototypes

public function boolean of_getdnsip (string as_dns, ref string as_ipadress[]);//函  数:of_GetDNSIp()
//功  能:得到指定域名的IP
//参  数:string as_DNS //域名
//        ref  string as_ipadress[] //返回的ip数组
//返回值:Boolean True/False   
//修改人:yyoinge

string ls_IpAddress[]
int li_IP_Count
s_wsadata l_WSAData
ULong ll_addr, ll_IP, ll_ipaddr, ll_stringip  
int li_version = 257
blob{128} lb_HostName
ulong ll_addr_list
os_hostent lstr_hostent

if wsastartup(li_version, l_WSAData)  =  0 then
    lb_hostname = blob('www.baidu.com')
    ll_addr  =  gethostbyname(lb_HostName)
    RtlMoveMemory(lstr_hostent, ll_addr, 16)
    ll_addr_list  =  lstr_hostent.haddrlist
 
    li_IP_Count  =  0 
    Do While True  
        RtlMoveMemory(ll_IPAddr, ll_addr_list, 4  )
        If ll_IPAddr = 0 Then Exit  
            li_IP_Count = li_IP_Count + 1
            RtlMoveMemory(ll_StringIP,  ll_IPAddr, 1)
            ls_IpAddress[li_IP_Count] = string(ll_StringIP) + "."
            RtlMoveMemory(ll_StringIP, ll_IPAddr + 1, 1)
            ls_IpAddress[li_IP_Count] = ls_IpAddress[li_IP_Count] + string(ll_StringIP) + "."
            RtlMoveMemory(ll_StringIP, ll_IPAddr + 2, 1)
            ls_IpAddress[li_IP_Count] = ls_IpAddress[li_IP_Count] + string(ll_StringIP)+ "."
            RtlMoveMemory(ll_StringIP, ll_IPAddr + 3, 1)
            ls_IpAddress[li_IP_Count] = ls_IpAddress[li_IP_Count] + string(ll_StringIP)
            ll_addr_list = ll_addr_list + 4
    Loop
    WSACleanup() 
End if

as_ipadress = ls_IpAddress

return upperbound(as_ipadress) > 0 //取到IP则返回true
end function

on n_cst_ip.create
call super::create
TriggerEvent( this, "constructor" )
end on

on n_cst_ip.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on

程序中这样调用即可:
n_cst_ip ln
string ls_dsn = 'www.baidu.com',ls[]
if ln.of_getdnsip(ls_dsn, ls) then
    long i
    for i = 1 to upperbound(ls)
        messagebox('提示', '域名【' + ls_dsn + '】对应的IP地址(' + string(i) + ')为:~r~n~r~n' + ls[i])
    next
end if



PB9中通过网址(域名)获取IP的方法(转载)

string ls_HostName = space(128) gethostname ( ls_HostName, len(ls_HostName) )
  • anlidong
  • anlidong
  • 2017年10月17日 10:34
  • 72

[Java] 通过域名获取IP地址的方法与作用

在学Java过程中,接触到了java.net包,发现其中有一个InetAddress类,可以使用它的静态方法getByName获取IP地址,刚开始还没怎么注意到它的作用。在之后的学习中接触到了DNS域...
  • Mr_Viker
  • Mr_Viker
  • 2016年06月16日 14:57
  • 5815

安卓域名转IP地址(获取Response Header的Location)

package com.itant.ipconvert;import org.apache.http.Header; import org.apache.http.HttpResponse; impo...
  • ithouse
  • ithouse
  • 2015年05月13日 18:17
  • 1922

获取IP地址函数(本地、域名转换)

/* GetIp.c -- Get Local or remote Ip address by domain name* */#include #include #include #include #...
  • aaronbai
  • aaronbai
  • 2006年11月04日 21:19
  • 838

linux 通过域名获得ip

代码 #include #include int main(int argc, char *argv[]) { if (argc != 2) { ...
  • zzz_781111
  • zzz_781111
  • 2012年03月20日 10:44
  • 2221

通过主机名(域名)获取IP地址,主机别名等信息

通过主机名(域名)从主机数据库获取主机信息(IP地址,主机别名,标准主机名)...
  • s634772208
  • s634772208
  • 2015年06月05日 16:07
  • 3326

如何获取域名(网址)对应的IP地址

域名(Domain Name),是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。通俗点讲,域名就是我们平时进行网络浏览时所用到的网址(...
  • u010542873
  • u010542873
  • 2016年04月07日 15:42
  • 9581

Android解析域名获取IP

1.解析域名获取的IP可能不止一个,所以返回的是一个数组.(网络请求,所以要放在线程中执行) /** * 解析域名获取IP数组 * @param host * ...
  • u013072976
  • u013072976
  • 2018年01月16日 15:01
  • 65

提取URL地址中的域名与端口

import urllib proto, rest = urllib.splittype("http://blog.csdn.net/djd1234567") print proto,r...
  • djd1234567
  • djd1234567
  • 2016年07月20日 12:44
  • 333

linux 网络域名ip查询命令

houst 域名 查询域名对应外网地址
  • pzqingchong
  • pzqingchong
  • 2016年03月01日 11:40
  • 1437
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PB9中通过网址(域名)获取IP的方法
举报原因:
原因补充:

(最多只允许输入30个字)