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

PB12.5 获取ip与计算机名 /声明 extern function。/建立全局的结构s_wsadata。 阅读详情

    将以下内容保存为本地文件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



pb中如何获得机器ip地址 在用pb开发信息管理系统时,为了安全期间,我们希望记录每个登录用户的信息,并生成日志,其中最重要的是知道是哪个机器运行程序的?这样,只要获取运行程序的机器ip问题就解决了,然而,pb中没有象delphi 中有现成的函数可以很方便的获的机器的ip,我们只好利用外部函数来实现了。首先声明外部函数function int WSAStartup( uint UIVersionRequested, ref s_WSAData lpWSAData ) library "wsock32.dll"function int WSACleanup() library "wsock32.dll"function int WSAGetLastError ( ) library "wsock32.dll"function int gethostname ( ref string name, int namelen ) library "wsock32.dll"function string GetHost(string lpszhost, ref blob lpszaddress ) library "PBWS32.DLL" 然后在form的open事件中执行如下代码就可以了s_wsadata l_WSADataint li_version = 257blob{4} lb_hostaddress IF wsastartup ( li_version, l_WSAData ) = 0 THEN IF gethostname ( ls_HostName, len(ls_HostName) ) < 0 THEN messagebox("GetHostName",WSAGetLastError()) ELSE GetHost(ls_HostName, lb_HostAddress) //获得主机名和IP地址 ls_IpAddress = string(asc(string(blobmid(lb_HostAddress,1,1))),"000") + "." ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,2,1))),"000") + "." ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,3,1))),"000") + "." ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,4,1))),"000") //将IP地址的ASC码形式转化为***.***.***.***字符串格式 END IF WSACleanup()ELSE messagebox("GetHostName",WSAGetLastError())END IF 立即下载

相关推荐

pb中获得本机IP地址\MAC地址信息纯代码方式

pb9程序直接获取ip地址,mac地址。源码包含原生版本、以及PB9.0和9B11.2两个版本的工程文件,用于个性化设定,带有另一组获取DNS版本。仅供参考。

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

string ls_HostName = space(128) gethostname ( ls_HostName, len(ls_HostName) )

anlidong的专栏 1485

powerbuilder获取本地IP地址或主机名

绝对真的,我在powerbuilder9.0下用的,能够获得,哈哈~~找了一星期了,分享下~~

服务器网址修改,网址服务器地址修改

网址服务器地址修改 内容精选换一换下载地址:https://github.com/pypa/setuptools打开网址后找到版本v29.0.1并下载,如下图所示。下载地址:https://pypi.org/project/psutil/#files打开网址后找到版本5.7.0并下载,如下图所示。下载地址:https://pypi.org/project/pbr/#fil云平台支持修改主网卡的私有...

weixin_28487433的博客 450

PB获取本机IP地址.rar

pb9.0编写的,可以获取本机IP地址及掩码的小工具,亲测有效。

PB 获取 IP MAC 地址

pb9程序直接获取ip地址,mac地址,mac获取方法为网络搜集资料

网址服务器地址修改,网址服务器地址修改

网址服务器地址修改 内容精选换一换下载地址:https://github.com/pypa/setuptools打开网址后找到版本v29.0.1并下载,如下图所示。下载地址:https://pypi.org/project/psutil/#files打开网址后找到版本5.7.0并下载,如下图所示。下载地址:https://pypi.org/project/pbr/#fil云平台支持修改主网卡的私有...

weixin_35915828的博客 453

Powerbuilder 获取IP地址,MAC地址

pb使用函数GetAdaptersInfo 这个资源,是我自己写的代码,我违反了什么规定?

网络:当你键入网址之后,发生了什么

URI解析 一般过程 当你在浏览器中输入信息时,浏览器就已经开始进行工作了。首先它会监听我们输入的信息并尝试匹配出你想要访问的网址或关键词,以 chrome 为例,它会猜我们想要什么,给出下面的建议项: 使用默认搜索引擎搜索关键字 书签,历史记录和最近下载中存储的其他链接 使用默认搜索引擎的相关关键字搜索选项 当我们在地址栏输入xxxx.com后回车,命令浏览器搜索信息。浏览器就会对输入的信息进行以下判断: 输入的是不是一个合法的URI 如果不是,就将输入的内容作为搜索的条件,生成一个HTTP数据

OceanStar的博客 684

使用 Unity Sentis 和 Compute Shader,det_10g.onnx 进行高效人脸五官定位

在计算机视觉领域,人脸五官定位是一个重要的任务。本文将介绍如何使用 Unity Sentis 和 Compute Shader,结合模型,实现高效的人脸五官定位。我们将详细讲解每一步骤,并提供完整的代码示例。

m0_55632444的博客 2393

VC Spyglass实战指南:从零开始掌握CDC约束配置与调试

本文详细介绍了如何使用VC Spyglass进行CDC约束配置与调试,从基础环境搭建到典型CDC问题调试实战,帮助开发者快速掌握跨时钟域验证技术。通过TCL脚本和SDC约束的深度解析,提升CDC验证效率,避免常见设计风险。

weixin_26757925的博客 296

STM32H743-ARM例程36-DNS

本文介绍了基于STM32H743的DNS域名解析实验,使用银杏科技GT7000开发板和iToolXE仿真器作为硬件平台。软件方面采用STM32CubeMX配置生成HAL库工程,包括MPU、以太网(RMII模式)和LWIP协议的详细设置。实验实现了DNS解析功能,通过回调函数获取域名对应的IP地址,并通过TCP回显服务器返回结果。文中提供了完整的硬件配置方案、软件工具链(MDK、STM32CubeMX等)和网盘资料链接,详细说明了DNS工作原理及其在嵌入式系统中的实现方法。

GilgameshJSS的博客 1118

【数据挖掘】心跳信号分类预测 之 特征工程 —— 学习笔记(三)

三、特征工程 3.1 看书 常言道,“巧妇难为无米之炊”。在 ML 中,数据和特征将作“米”,模型和算法则为“妇”。若无数量充足的数据、良好表示的特征,再强大的模型也难以得到满意的结果 (garbage in,garbage out)。对于 ML 问题,数据和特征往往决定了结果的上限,而模型、算法的选择及优化则是在逐步接近该上限。 特征工程,顾名思义,是对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用。在本质上,特征工程是一个表示和展现数据的过程。在实际中,特征工程旨在去除...

闻韶 3358

PB开发微信公众号

如果你有这样的需求,需要为用户或者自己开发一个微信公众号,当有用户关注该公众号,或者发消息时,我们的系统可以自动处理,并进行回复,还需要把其中一些信息推送到我们的pb客户端。 这个功能如何用pb实现? 配置微信公众号 进入微信公众平台测试,可以进行相关公众平台的测试开发。只需要 设置两个地方就可以,比较简单,不多说。不过有个坑比较大,坑了我好久,用红字标记。 注意:1. ...

pcwe2002的专栏 7714

Twin Builder CFD 示例:构建、验证和评估静态 ROM

通过我们构建、验证和评估静态 ROM 的综合指南,释放 Twin Builder CFD 的潜力。

jkh920184196的博客 1102

深度残差网络的无人机多目标识别

深度残差网络的无人机多目标识别 人工智能技术与咨询 来源:《图学学报》。作者翟进有等 摘要:传统目标识别算法中,经典的区域建议网络(RPN)在提取目标候选区域时计算量大,时间复杂度较高,因此提出一种级联区域建议网络(CRPN)的搜索模式对其进行改善。此外,深层次的卷积神经网络训练中易产生退化现象,而引入残差学习的深度残差网络(ResNet),能够有效抑制该现象。对多种不同深度以及不同参数的网络模型进行研究,将两层残差学习模块与三层残差学习模块结合使用,设计出一种占用内存更小、时间复杂度更低的新型多捷.

m0_62870606的博客 3111

服务器域名配置文件,linux服务器域名配置文件

linux服务器域名配置文件 内容精选换一换本章节介绍如何将下载的证书安装到Nginx服务器上。安装好证书后,您的Web服务器将能支持SSL通信,从而保证您Web服务器的通信安全。如果证书安装过程中遇到问题,请在证书下载页面右方的一对一咨询中,单击立即咨询,联系工程师进行处理。您还可以直接单击HTTPS服务配置全站加密SSL优化检测进行购买,购买服务后,联系工程师进行处理。证书状态本章节介绍如何将...

weixin_29279153的博客 1309

Keras中神经网络可视化模块keras.utils.visualize_util安装配置方法

Keras中神经网络可视化模块keras.utils.visualize_util安装配置方法

jacke121的专栏 2759

基于LWIP协议栈实现DNS服务

前言 TCP/IP协议是网络通讯的基础,平常在对TCP/IP协议设置时会涉及到IP地址,子网掩码,默认网关和DNS这几个参数。这里我们主要谈下IP地址和DNS这两个参数之间的关系。 首先计算机在网络中进行通讯时只能识别“101.86.134.121”之类的IP地址,那么为什么我们平时在访问网站时只在浏览器地址栏中输入“www.ba...

hangzhouyx的博客 597

Prism 入门02,区域介绍

什么是区域(Region)?区域,在Prism 框架中,区域是模块化的核心的功能之一,其主要作用是降低应用程序和模块之间的耦合度。使用方式:在应用程序的界面中,划分出某块区域,并为这个区域定义一个唯一的区域名称。那么通过这个区域名称,应用程序就可以找到指定的区域。并为这个区域动态放置一些容器或控件,从而呈现在界面中。

build2024 1126

SecOC专题之新鲜值TripCnt

本系列为一步步拆解新鲜值的分发及管理而撰写文章属于原创,根据自身开发经验及理解撰写,若有错误请指出Trip Counter是新鲜值中变化最慢的一个part,并且自增到最大值时,会从头开始翻转计数。Trip Counter需要收发双方都保存,由于其变化较慢,所以不会经常进行同步该值。这就要求开发过程中保证每次对该值的读写必须要正确。

qq_22969363的博客 1154

<1.1>计算机基础知识

一、计算机系统分类 1、硬件系统:输入设备、输出设备、控制器、内存、外存 2、软件系统 (1)系统软件:控制硬件 1)桌面操作系统:windows用户群体大,macos程序员使用较多,Linux软件使用较少 2)服务器操作系统:Linux安全、稳定、免费,Windows Server付费、占用率低 3)嵌入式操作系统:Linux文件很小,一般使用在机顶盒、pda、网络电视、手机等 4)移动设备操作系统:Android、ios (2)应用软件:qq、迅雷、游戏、ppt、word等 (3)b/s和c/s架构 1

qq_43695167的博客 617

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

制作自己的个人博客网站

拥有一个私人的博客是一件很酷的事情,私以为有想法的同学都应该有个博客,就像日记一样,写写自己的经历,感悟等。我也在B站上花费了好多时间,终于找到了一个特别简单易行的,感谢up主@爱生活的逍遥君。 现在,小徐同学就带领大家照着up的视频来做属于你自己的博客。 第一步,你得有个云服务器。现在最经济的是国外的亚马逊的云服务器,只要你新注册并且绑定行用卡就会给你12个月的免费使用时长,哪怕这个服务器的...

godmanxu的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: pb控件强化:一个在drag时可以自动上下滚动的treeview控件对象
下一篇: pb9获取文件创建时间、最后修改时间及设置最后修改时间的方法
yyoinge
博客等级 码龄21年 222粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值