【已解决】为什么IP地址没有连接 也可以PING通
本帖最后由 itzyx 于 2021-8-8 21:05 编辑想写一个简单的小程序,首先需要先选择对应的以太网名称,然后更改其网段1~10,然后从1~255 看是否PING通,本来应该是 8网段才可以PING通 ,不知道为什么PING的结果显示2~5网段都可以PING通,各位大佬这是为什么?
然后单线程的PINGIP就是这么慢嘛(1~10网段ping完要好几分钟),有没有提速的方法,我也搜索了相关标题,可惜P版的多线程PING 我现在还看不懂。下面是代码,希望大佬们能指点迷津,万分感谢!
#include <WindowsConstants.au3>
Local $oClassSet, $oClass, $oLocator
Local $oService, $sMesStr
$CreateName = "Obtaining an IP address"
$Form1 = GUICreate($CreateName, 420, 120, -1, -1)
$Group1 = GUICtrlCreateGroup("", 8, 0, 400, 73)
$Label1 = GUICtrlCreateLabel("网络适配器:", 16, 20, 100, 17)
$Combo1 = GUICtrlCreateCombo("", 100, 16, 300, 100, 0003)
$button1 = GUICtrlCreateButton("Ping", 340, 80, 60, 30, $WS_BORDER)
GUISetState(@SW_SHOW)
$oLocator = ObjCreate("WbemScripting.SWbemLocator")
$oService = $oLocator.ConnectServer
$oClassSet = $oService.ExecQuery("Select * From Win32_NetworkAdapter Where NetConnectionID IS NOT NULL")
For $oClass In $oClassSet
$sMesStr = $oClass.NetConnectionID
GUICtrlSetData($Combo1, $sMesStr)
Next
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $button1
$COM = GUICtrlRead($Combo1)
GUIDelete($Form1)
_PING()
ExitLoop
EndSwitch
WEnd
Func _PING()
Local $hTimer = TimerInit()
For $WAN = 1 To 10
Run(@ComSpec & ' /c netsh -c interface ip set address "' & $COM & '" static 192.168.' & $WAN & '.155 255.255.255.0 ', "", @SW_HIDE)
For $i = 1 To 255
$ip = Ping('192.168.' & $WAN & '.' & $i, 5)
If $ip <> 0Then ExitLoop 2
Next
Next
Local $fDiff = TimerDiff($hTimer)
$fDiff = Round($fDiff / 1000, 2)
MsgBox(64, '提示', '共耗时:' & $fDiff & 's,IP:192.168.' & $WAN & '.' & $i)
EndFunc ;==>_PING
itzyx 发表于 2021-8-7 22:43
谢谢大佬,但是多进程这方面我不是太懂,能否稍微举个例子 ,万分感谢
多用论坛的 搜索
https://www.autoitx.com/forum.php?mod=viewthread&tid=12666&highlight=ping 当前网络不是一级路由吧 haijie1223 发表于 2021-8-7 17:41
当前网络不是一级路由吧
发哥,我是用交换机转接的,是不是PING通的 压根就不是电脑的IP啊?但是我换个电脑直连的话,PING通的还是不对 结果显示的IP地址是 192.168.1.155 因为你的上级路由中,有这个IP终端,所以ping通也是正常的。我现在的网段是192.168.199.xx,但是我ping192.168.1.1可以ping通,因为我的上级路由器是192.168.1.1,所有的192.168.1.xxx的终端,我在当前的199网段下都可以ping通。
haijie1223 发表于 2021-8-7 18:00
因为你的上级路由中,有这个IP终端,所以ping通也是正常的。我现在的网段是192.168.199.xx,但是我ping192. ...
发哥,那能不能增加个筛选,获取上级路由器的网段,比如上级路由器是192.168.1.1 就不PING 1网段,只PING 上位机其他的网段 itzyx 发表于 2021-8-7 18:11
发哥,那能不能增加个筛选,获取上级路由器的网段,比如上级路由器是192.168.1.1 就不PING 1网段,只PI ...
这个我就不懂了,等其他给你答案吧。 可以使用多进程去ping,用一个主进程,给子进程传参数,然后子进程再把结果传回主进程,AU3自带ping函数我记得默认是有超时时间可以设置的 我觉得不如直接说说最终的目的是什么,我对这个操作有点迷糊... Xxkwwz 发表于 2021-8-7 20:15
可以使用多进程去ping,用一个主进程,给子进程传参数,然后子进程再把结果传回主进程,AU3自带ping函数我 ...
谢谢大佬,但是多进程这方面我不是太懂,能否稍微举个例子 ,万分感谢 邪恶海盗 发表于 2021-8-7 21:20
我觉得不如直接说说最终的目的是什么,我对这个操作有点迷糊...
大佬,是这样子的,我有个设备,可以直连上位机或者通过交换机连接,现在 设备的IP地址我不知道,需要我手动 更改上位机的网段,来ping IP(1~255),如果可以ping 通,就能知道该设备的IP地址,所以我用AU3自动改上位机 以太网的网段来PING, 可是 2~5网段都可以PING通,无法精准定位设备的IP地址,我现在的目的 就是希望能够筛选其他IP,精准定位到该设备的IP 地址 haijie1223 发表于 2021-8-7 18:27
这个我就不懂了,等其他给你答案吧。
好的,谢谢发哥:face (31): 绿色风 发表于 2021-8-8 08:52
多用论坛的 搜索
https://www.autoitx.com/forum.php?mod=viewthread&tid=12666&highlight=ping
好的 谢谢风哥,我其他都下载了,以为这个帖子没源码呢:face (36): itzyx 发表于 2021-8-7 22:49
大佬,是这样子的,我有个设备,可以直连上位机或者通过交换机连接,现在 设备的IP地址我不知道,需要我 ...
断开其它连接的设备,只连接这个未知IP的设备来PING不就行了? https://www.azofreeware.com/2006/03/angry-ip-scanner-221.html
直接下載這軟體慢慢try,上位機與其他聯網設備斷開,只跟上位機連線抓ip看看。
页:
[1]
2