Hallo zusammen!
Habe grade voll den logischen Denkfehler. ich will mir einen Algorithmus programmieren, mit dem ich IP-Ranges (z.B.: von 192.0.0.1 - 192.168.0.0) scannen kann.
Folgenden Code habe ich bisher geschrieben:
Spoiler anzeigen
#include <Array.au3>
_ArrayDisplay(_PingAll("192.0.0.1", "192.168.0.1", 25, 0, 0))
Func _PingAll(Const $S_IPSTART, Const $S_IPEND, Const $_TIMEOUT = 4000, Const $I_GETNAME = 0, Const $I_GETMAC = 0)
Local $a_ret[20480][4]
Local $i = 1
$a_startip = StringSplit($S_IPSTART, ".", 1)
$a_endip = StringSplit($S_IPEND, ".", 1)
For $i_first = $a_startip[1] To 255
If $i_first > $a_endip[1] Then ExitLoop
For $i_second = $a_startip[2] To 255
If $i_second > $a_endip[2] Then ExitLoop
For $i_third = $a_startip[3] To 255
If $i_third > $a_endip[3] Then ExitLoop
For $i_fourth = $a_startip[4] To 255
$a_ret[$i][0] = $i_first & "." & $i_second & "." & $i_third & "." & $i_fourth
;~ MsgBox(0, "", "Fourth: " & $i_fourth & @CR & "End: " & $a_endip[4] & @CR & $a_ret[$i][0])
If $i_fourth > $a_endip[4] Then
;~ Hier fehlt die entscheidende Überprüfung!
ExitLoop
EndIf
;~ $a_ret[$i][1] = Ping($a_ret[$i][0], $_TIMEOUT)
;~ If Not @error Then
;~ $a_ret[$i][2] = _TCPIpToName($a_ret[$i][0])
;~ $a_ret[$i][3] = _IpToMac($a_ret[$i][0])
;~ EndIf
$i += 1
Next
Next
Next
Next
$a_ret[0][0] = $i - 1
ReDim $a_ret[$i][4]
Return ($a_ret)
EndFunc ;==>_PingAll
Das Problem ist die Zusammensetzung der Schleifen, da er ja in Abhängigkeit des jeweiligen Oktetts fortfahren muss oder nicht. Vielleicht kann mir ja jemand weiterhelfen!