WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   15 IPs pingen und antowrt erhalten (mit vb) (http://www.wcm.at/forum/showthread.php?t=117486)

Potassium 02.12.2003 21:13

15 IPs pingen und antowrt erhalten (mit vb)
 
hi leute
ich will ein programm schreiben das ca 15 vorgegebene IP-Adressen pingt und dann zb in ein label (aber das is egal) ausgibt welche schon vergeben ist und welche nicht. mit dem shell("ping.exe blabaleb) bin ich ned weitergekommen. habt ihr ideen? gibt es da einen API-Aufruf?
wie ist das am besten/einfachsten zu lösen?
PS: wie im Titel steht, das ganze plz für vb 6.0.

mfg
Potassium

daytrader 02.12.2003 21:19

das sollte helfen

Joker 02.12.2003 21:19

Hallo,

schau doch mal da nach

http://www.microsoft.com/technet/tre...k/scrnet04.asp

Potassium 02.12.2003 22:09

thx @beide
@daytrader:
leider funzt "dein" quellcode ned. er zeigt das alle adressen erreicbar sind auch die die es gar ned gibt. und hostnamen funzen gar ned.

daytrader 02.12.2003 23:19

habs nun mit VB5 ausprobiert und funkt. tadellos


Code:

Option Explicit

' Benötigte API-Deklaration
Private Declare Function IsDestinationReachable Lib _
  "Sensapi.dll" Alias "IsDestinationReachableA" _
  (ByVal lpszDestination As String, _
  lpQOCInfo As QOCINFO) As Long

Private Type QOCINFO
  dwSize As Long
  dwFlags As Long
  dwInSpeed As Long
  dwOutSpeed As Long
End Type

' Server anpingen und Reaktionszeit zurückgeben
Public Function Ping(ByVal sHost As String) As Single
  Dim QI As QOCINFO
  Dim vTime As Single
 
  QI.dwSize = Len(QI)
  vTime = Timer
  If IsDestinationReachable(sHost, QI) = 1 Then
    Ping = Timer - vTime
  Else
    Ping = -1
  End If
End Function


Private Sub Form_Load()

Dim nTime As Single
nTime = Ping("217.160.105.222")
If nTime <> -1 Then
  MsgBox "Server erreichbar: Pingzeit: " & CStr(nTime) & " Sekunden"
Else
  MsgBox "Server nicht erreichbar!"
End If

End Sub


Nightman 02.12.2003 23:21

servus an alle

also potassium schreibt das tool eigentlich für mich

er hatte es schon funktionierend auf seinem pc(winxp)

dann hatt er es mir geschickt schau da ist es ein automatisierungs fehler kann uns wer helfen bitte

------------------------
sorce

Private Sub cmdPrüfen_click()
lbl.Caption = "Untersuche Netzwerk..."

For i = 1 To 15
strMachines = "192.168.0." & i
aMachines = Split(strMachines, ";")

For Each machine In aMachines
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonat e}").ExecQuery("select * from Win32_PingStatus where address = '" & machine & "'")
For Each objStatus In objPing
If IsNull(objStatus.StatusCode) Or objStatus.StatusCode <> 0 Then
temp = temp & vbCrLf & ("IP-Adresse " & machine & " ist in diesem Netzwerk nicht vergeben")
Else
temp = temp & vbCrLf & ("IP-Adresse " & machine & " ist in diesem Netzwerk bereits vergeben")
End If
Next
Next
Next i
lbl.Caption = temp
End Sub
-------------

Fehler

hier

daytrader 02.12.2003 23:24

vielleicht andere sensapi.dll version auf deinem rechner?
meine ist 5.0.2195.6627

Potassium 02.12.2003 23:25

deleted

Potassium 02.12.2003 23:26

habs auch nochmal bei meinem 2en pc auf win2k ausprobiert... und es funzt ned......folgenden fehlermeldung:
edit: siehe unten

@ daytrader:
ich hab es mit vb6.0 probiert da funzt es ned.zumindest zeigt er keine richtigen ergebnisse.......:heul:

Potassium 02.12.2003 23:30

Zitat:

Original geschrieben von daytrader
vielleicht andere sensapi.dll version auf deinem rechner?
meine ist 5.0.2195.6627

meine ist: 5.1.2600.1106

Potassium 02.12.2003 23:31

Zitat:

Original geschrieben von potassium
habs auch nochmal bei meinem 2en pc auf win2k ausprobiert... und es funzt ned......folgenden fehlermeldung:
edit: siehe oben(nightman)

@ daytrader:
ich hab es mit vb6.0 probiert da funzt es ned.zumindest zeigt er keine richtigen ergebnisse.......:heul:


Nightman 02.12.2003 23:40

also ich ahb den sorce auch versucht aber auch ohne erfolg

is wurscht welche interne ip ich ping er findet alle obwohl ich nur 192.168.0.1-5 verwende

irgentwas stimmt da ned

Vb6 und win2k + win2kserver

daytrader 02.12.2003 23:46

achso!

"Anwendung:
Verwenden Sie im lokalen LAN für sHost immer den Rechnernamen:"

siehe auch link

Potassium 02.12.2003 23:50

er willl aber wissen welche ips noch frei sind und welche schon belegt......dafür braucht er es.....

Nightman 02.12.2003 23:50

naja ich will ja auch nur ips pingen keien rechnernamen

daytrader 02.12.2003 23:53

leider - lokal gehts so leider nicht - hab gemeint ihr wollt nicht lokal, sondern externe server anpingen (deshalb hats bei mir auch funktioniert :-))- da muß man sich dann leider was anderes einfallen lassen

Nightman 02.12.2003 23:56

jo wir haben ja schon ein script was eigentlich auch läuft leider nur unter winxp

ich ahbe aber einen win2k rechner und da bekomme ich eine fehlermeldung (automatisierungsfehler)

steht alles weiter oben

Potassium 02.12.2003 23:58

er meint das script von joker :D

Nightman 03.12.2003 00:05

also haben jetzt erst gelesen das das script nur unterxp und wink2³ funzt nicht unter win2k

also suchen wir/ich ein neues script und bitte um eure hilfe

flinx 03.12.2003 01:19

Könntets nicht mit dem Shell-Aufruf das Ergebnis vom Ping in eine Datei umleiten und diese dann Öffnen und das Ergebnis ausgeben?

Potassium 03.12.2003 01:23

das is doch ziemlich sehr umständlich.....ich dacht ich kann das umgehen eben mit einem APIaufruf oä :(

Potassium 03.12.2003 20:50

Zitat:

Original geschrieben von flinx
Könntets nicht mit dem Shell-Aufruf das Ergebnis vom Ping in eine Datei umleiten und diese dann Öffnen und das Ergebnis ausgeben?
hab das jetzt nochmal probiert aber irgendwie funzt das gar ned. er führt den shellbefehl ned richtig aus oder er findet die datei ned oder wos was i.....:motz:
i hob mi heute damit 5 stunden gespüt.... :mad:
da muss es doch noch was geben.......:heul: :heul: :heul:

flinx 03.12.2003 22:26

Zitat:

hab das jetzt nochmal probiert aber irgendwie funzt das gar ned.
??
Habs nur unter Excel probiert, aber des funktioniert:
Code:

Sub irgendwas()
    Test = Shell("cmd.exe /C ping 10.1.1.4 >d:\myip.txt") 
    Open "d:\myip.txt" For Input As #1
        Do Until EOF(1)
            Line Input #1, meintext
            If meintext <> "" Then MsgBox meintext
        Loop
        Close #1

End Sub


Potassium 04.12.2003 20:37

das geht ned. weil das pingen und in datei ausgeben vergleichsweise ewig dauert. und er aber sofort öffnen will. :(

flinx 04.12.2003 20:42

Zitat:

Original geschrieben von potassium
das geht ned. weil das pingen und in datei ausgeben vergleichsweise ewig dauert. und er aber sofort öffnen will. :(
Dann baust halt ein 'sleep' zum warten ein.

Potassium 04.12.2003 20:49

is sleep vb? in der msdn steht nix über sleep in vb.

daytrader 04.12.2003 21:02

aber hier:

http://www.vbarchiv.net/vbapi/Sleep.php


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag