itzyx 发表于 2021-8-7 17:24:42

【已解决】为什么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


绿色风 发表于 2021-8-8 08:52:53

itzyx 发表于 2021-8-7 22:43
谢谢大佬,但是多进程这方面我不是太懂,能否稍微举个例子 ,万分感谢


多用论坛的 搜索

https://www.autoitx.com/forum.php?mod=viewthread&tid=12666&highlight=ping

haijie1223 发表于 2021-8-7 17:41:17

当前网络不是一级路由吧

itzyx 发表于 2021-8-7 17:58:06

haijie1223 发表于 2021-8-7 17:41
当前网络不是一级路由吧

发哥,我是用交换机转接的,是不是PING通的 压根就不是电脑的IP啊?但是我换个电脑直连的话,PING通的还是不对   结果显示的IP地址是 192.168.1.155   

haijie1223 发表于 2021-8-7 18:00:54

因为你的上级路由中,有这个IP终端,所以ping通也是正常的。我现在的网段是192.168.199.xx,但是我ping192.168.1.1可以ping通,因为我的上级路由器是192.168.1.1,所有的192.168.1.xxx的终端,我在当前的199网段下都可以ping通。

itzyx 发表于 2021-8-7 18:11:43

haijie1223 发表于 2021-8-7 18:00
因为你的上级路由中,有这个IP终端,所以ping通也是正常的。我现在的网段是192.168.199.xx,但是我ping192. ...

发哥,那能不能增加个筛选,获取上级路由器的网段,比如上级路由器是192.168.1.1   就不PING 1网段,只PING 上位机其他的网段

haijie1223 发表于 2021-8-7 18:27:50

itzyx 发表于 2021-8-7 18:11
发哥,那能不能增加个筛选,获取上级路由器的网段,比如上级路由器是192.168.1.1   就不PING 1网段,只PI ...

这个我就不懂了,等其他给你答案吧。

Xxkwwz 发表于 2021-8-7 20:15:31

可以使用多进程去ping,用一个主进程,给子进程传参数,然后子进程再把结果传回主进程,AU3自带ping函数我记得默认是有超时时间可以设置的

邪恶海盗 发表于 2021-8-7 21:20:48

我觉得不如直接说说最终的目的是什么,我对这个操作有点迷糊...

itzyx 发表于 2021-8-7 22:43:26

Xxkwwz 发表于 2021-8-7 20:15
可以使用多进程去ping,用一个主进程,给子进程传参数,然后子进程再把结果传回主进程,AU3自带ping函数我 ...

谢谢大佬,但是多进程这方面我不是太懂,能否稍微举个例子 ,万分感谢

itzyx 发表于 2021-8-7 22:49:55

邪恶海盗 发表于 2021-8-7 21:20
我觉得不如直接说说最终的目的是什么,我对这个操作有点迷糊...

大佬,是这样子的,我有个设备,可以直连上位机或者通过交换机连接,现在 设备的IP地址我不知道,需要我手动 更改上位机的网段,来ping IP(1~255),如果可以ping 通,就能知道该设备的IP地址,所以我用AU3自动改上位机 以太网的网段来PING, 可是 2~5网段都可以PING通,无法精准定位设备的IP地址,我现在的目的 就是希望能够筛选其他IP,精准定位到该设备的IP 地址

itzyx 发表于 2021-8-7 22:50:27

haijie1223 发表于 2021-8-7 18:27
这个我就不懂了,等其他给你答案吧。

好的,谢谢发哥:face (31):

itzyx 发表于 2021-8-8 11:17:59

绿色风 发表于 2021-8-8 08:52
多用论坛的 搜索

https://www.autoitx.com/forum.php?mod=viewthread&tid=12666&highlight=ping

好的 谢谢风哥,我其他都下载了,以为这个帖子没源码呢:face (36):

邪恶海盗 发表于 2021-8-8 11:57:40

itzyx 发表于 2021-8-7 22:49
大佬,是这样子的,我有个设备,可以直连上位机或者通过交换机连接,现在 设备的IP地址我不知道,需要我 ...

断开其它连接的设备,只连接这个未知IP的设备来PING不就行了?

yohoboy 发表于 2021-8-8 12:10:20

https://www.azofreeware.com/2006/03/angry-ip-scanner-221.html   

直接下載這軟體慢慢try,上位機與其他聯網設備斷開,只跟上位機連線抓ip看看。
页: [1] 2
查看完整版本: 【已解决】为什么IP地址没有连接 也可以PING通