| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 396 人关注过本帖
标题:获取本机内、外网IP
只看楼主 加入收藏
sych
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:317
专家分:448
注 册:2019-10-11
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
获取本机内、外网IP
代码都是网上抄来的,不知道有坑没有,请大家指教,同事也请大家分享一下自己掌握的简单易用的方法获取内外网IP的代码
IPSocket=CreateObject("MSWinsock.Winsock")
?"内网IP",IPSocket.LocalIP

test=CREATEOBJECT("WinHttp.WinHttpRequest.5.1")
test.OPEN("get","http://www.,.F.)
test.SEND
?"外网IP",test.responsetext

搜索更多相关主题的帖子: 本机 获取 test IP 外网 
2024-05-28 11:51
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:708
专家分:2833
注 册:2018-3-13
收藏
得分:7 
谢谢,不过我这用 www. 返回的是 ipv6 地址

这家伙很懒,啥也没留下
2024-05-28 12:05
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:7 
若本机有多个 IP,推荐采用下述方法:

LOCAL ;
    oWMI AS OBJECT,;
    oLocal AS OBJECT,;
    oHARDWARE AS OBJECT,;
    object1 AS OBJECT,;
    cIP,;
    cMAC
oWMI = CREATEOBJECT("WbemScripting.SWbemLocator")
oLocal = oWMI.ConnectServer(".", "root\cimv2")
oHARDWARE = oLocal.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled=1")
FOR EACH object1 IN oHARDWARE
    cIP = object1.Properties_('IPAddress').VALUE
    cMAC = object1.Properties_('MACAddress').VALUE
    EXIT
ENDFOR
? 'IP地址:',cIP
? 'MAC地址:',cMAC

泉城飞狐
2024-05-28 13:29
sych
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:317
专家分:448
注 册:2019-10-11
收藏
得分:0 
回复 3楼 liuxingang28
一个程序对外通信,对应的IP是唯一的
2024-05-28 14:44
sych
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:317
专家分:448
注 册:2019-10-11
收藏
得分:0 
回复 2楼 csyx
通过路由器界面查询的也是IPV6?
这倒是个新情况
2024-05-28 14:47
nbwww
Rank: 8Rank: 8
等 级:贵宾
威 望:11
帖 子:332
专家分:804
注 册:2021-1-9
收藏
得分:7 
公网IP查询可以用这个地址:http://

LOCAL zdrole1
zdrole1 = createObject('Microsoft.XMLHTTP')
zdrole1.open('GET' , 'http://' , .f.)
zdrole1.send()
resu_zjb_url =STREXTRACT(zdrole1.responseText,'<h2>','</h2>')
?resu_zjb_url
2024-05-28 16:15
sych
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:317
专家分:448
注 册:2019-10-11
收藏
得分:0 
获取程序使用的内网IP地址
PROCEDURE getip
LOCAL dwSize, stTable, nTableCount,    dwLocalAddr, dwOwningPid,szLocalAddr,CurrentProcessId,ii
store "0.0.0.0" TO dwLocalAddr
Declare Integer GetCurrentProcessId In kernel32.Dll
DECLARE LONG GetExtendedTcpTable IN "Iphlpapi.dll" STRING@, LONG@, LONG, LONG, LONG, LONG
DECLARE LONG inet_ntoa IN "Ws2_32" LONG
DECLARE LONG ntohs IN "Ws2_32" LONG
DECLARE INTEGER CloseHandle IN kernel32 INTEGER hObject
DECLARE Long GetModuleFileNameEx IN PsApi  Long hProcess, Long hModule, String @ lpExename, Long dwSize
DECLARE Long OpenProcess IN WIN32API Long dwDesiredAccess, Long bInheritHandle, Long dwProcessId
CurrentProcessId=GetCurrentProcessId()
dwSize=0
GetExtendedTcpTable(NULL, @dwSize, 1, 2, 5, 0) && TCP_TABLE_OWNER_PID_ALL
IF m.dwSize > 0
    stTable = REPLICATE(0h0, m.dwSize) && 分配数据空间
    GetExtendedTcpTable(@stTable, @dwSize, 1, 2, 5, 0)
    nTableCount = CTOBIN(SUBSTR(m.stTable, 1, 4), "4Rs")
    IF m.nTableCount > 0
        stTable = STUFF(m.stTable, 1, 4, "")
        FOR ii = 1 TO m.nTableCount
            szLocalAddr = CTOBIN(SUBSTR(m.stTable, 5, 4), "4R")+2^31 && 本地 IP地址
            szLocalAddr = SYS(2600, inet_ntoa(m.szLocalAddr), 16)
            szLocalAddr = LEFT(szLocalAddr, AT(0h00, m.szLocalAddr)-1)
            dwOwningPid = CTOBIN(SUBSTR(m.stTable, 21, 4), "4R")+2^31 && 关联的进程ID
            IF m.CurrentProcessId=m.dwOwningPid
                dwLocalAddr=m.szLocalAddr
                exit
            endif
            stTable = STUFF(m.stTable, 1, 24, "")
        NEXT
    ENDIF
ENDIF
retu m.dwLocalAddr
2024-05-29 09:59
快速回复:获取本机内、外网IP
数据加载中...
 
   



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

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