PB程序获取本机IP和MAC地址的纯代码实现

需积分: 36 35 下载量 182 浏览量 更新于2024-12-27 1 收藏 248KB ZIP 举报
资源摘要信息:"在本资源中,我们将详细探讨如何使用PowerBuilder(简称PB)编程语言直接获取本机的IP地址和MAC地址。PowerBuilder是一款较为古老但仍被广泛使用的快速应用开发(RAD)工具,特别是在数据库应用程序开发领域。本文档提供了一套完整的源代码,包括原生版本以及PB9.0和PB9.0.11.2版本的工程文件,以及一组用于获取本机DNS信息的版本,可用于个性化设定。" 知识点一:PowerBuilder编程语言基础 PowerBuilder是由美国PowerSoft公司开发的一套集成开发环境(IDE),在1990年代中期至2000年代初期非常流行,主要用于开发客户端/服务器模式的数据库应用程序。它使用一种名为PowerScript的专有编程语言。PowerBuilder提供可视化的界面设计,并支持多种数据库,比如Sybase SQL Anywhere、Oracle、MySQL等。 知识点二:获取本机IP地址和MAC地址的方法 在PB9中,可以通过系统函数直接获取本机IP地址和MAC地址。IP地址通常是指分配给网络接口的唯一标识,而MAC地址(Media Access Control address)是网络设备在网络层面上的物理地址。获取这些信息对于进行网络配置、故障诊断、安全认证等应用是非常重要的。 知识点三:PowerBuilder的原生版本与特定版本 文档提到的“原生版本”可能指的是不受特定版本限制的通用版本,它可能不包含特定版本如PB9.0或PB9.0.11.2中的新功能或改进。而特定版本的工程文件则针对特定版本的PowerBuilder环境进行优化或特定功能的实现,比如“GetIP9.0”和“GetIP11.2”文件名暗示了这些文件是为PB9.0和PB9.0.11.2版本准备的。 知识点四:DNS信息的获取 DNS(Domain Name System,域名系统)是将域名和IP地址相互映射的一个分布式数据库系统,能够使人更方便地访问互联网。在文档中提到的“带DNS版本”的文件,可能是指那些在获取本机IP地址的同时,还能够查询和返回本机配置的DNS服务器地址的版本。这在进行网络配置和故障排查时非常有用。 知识点五:源代码工程文件的结构和使用 源代码工程文件(.pbt或.pj文件)是PB项目的主要组成部分,其中包含了项目所有的源代码、用户界面设计、数据库连接设置以及其他项目相关配置。这些文件可以在PowerBuilder开发环境中打开,并允许开发者查看和编辑代码,从而进行个性化设定或功能扩展。 知识点六:个性化设定的重要性 个性化设定通常指的是根据用户的需求或特定的应用场景对程序进行定制化调整。对于获取IP地址和MAC地址这样的基本功能,开发者可能需要根据实际的应用需求添加额外的逻辑,比如将获取到的信息以特定格式输出、根据网络环境动态选择合适的网络接口、甚至是将信息保存到日志文件中。个性化设定能够使程序更加灵活地适应不同的使用场景。 知识点七:PowerBuilder的衰落与迁移 由于PowerBuilder的开发停滞以及其他现代开发工具的崛起,许多开发者已经开始迁移至更为现代的编程语言和框架,如.NET、Java、JavaScript/TypeScript等。尽管如此,PowerBuilder仍在一些维护旧系统的企业中占有一席之地。了解如何在PB中实现这些网络信息的获取,对于维护和开发遗留的PB应用程序仍有实际意义。
2006-02-23 上传
在用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