Seite 1 von 1
Alternative zu PING
Verfasst: 30.06.2008 20:35
von Elektrolurch
Hi all
Ich hätte da mal wieder eine Frage.
Ich habe vor in einem Netzwerk nach der vorhandenen IP zu suchen um ein Gerät zu lokalisieren.
Mein Ansatz war der, ansteigend an die IP's ein Ping zu senden und dann die Antwort auszuwerten.
Klappt auch
Antwort von = gut
Zeitüberschreitung = schlecht.
Nun habe ich das Programm Zuhause weiterbearbeitet und es klappt nicht mehr, weil wegen des Routers andere Antworten zurück kommen.
Antwort von = gut
Antwort von .....Zielhost nicht erreicht = schlecht
Da ich mein Programm gern universell einsetzen möchte suche ich nach einer besseren Lösung, als den Abfragemodus zu erweitern.
Hat jemand eine Idee ?
Bye Andre
Verfasst: 30.06.2008 22:08
von AND51
Such doch einfach nach beidem!
Code: Alles auswählen
If FindString(String$, "Antwort von", 1)
Debug "neues Gerät gefunden"
ElseIf FindString(String$, "Zeitüberschreitung", 1) Or FindString(String$, "Zielhost nicht erreicht", 1)
Debug "kein neues Gerät gefunden"
EndIf
Würde auch mit der RegExp-Library gehen. Aber diese Möglichkeit sollte für dich ausreichen, sofern ich dich richtig verstanden habe.
Verfasst: 01.07.2008 06:35
von Elektrolurch
Hi Andi51
Nein leider wollte ich das nicht so.
Eine erweiterte Abfrage gefällt mir leider nicht.
Denn welche Antworten sind noch möglich, bei geänderter Konstellation.
Antworten in Englisch ???
Ich denke mit dem Ping Spiel bin ich auf dem Holzweg.
Meine Suche im CodeArchiv erbracht einen Erfolg.
Dort gibt es ein Programm Namens "GetLAnList"
leider verstehe ich nicht, was da gemacht wird.
Die eigentliche Prozedure sieht wie folgt aus.
Code: Alles auswählen
Procedure GetLANList()
IPResult.s
se101.SERVER_INFO_101
nStructSize = SizeOf(SERVER_INFO_101)
RetCode = NetServerEnum_(0, 101, @bufptr, #MAX_PREFERRED_LENGTH, @dwEntriesread, @dwTotalentries, #SV_TYPE_ALL, 0, @dwResumehandle)
If RetCode = #NERR_SUCCESS And RetCode <> #ERROR_MORE_DATA
For i = 0 To dwEntriesread - 1
CopyMemory( bufptr + (nStructSize * i),@se101, nStructSize)
Buffer.s=Space(512)
Result=WideCharToMultiByte_(#CP_ACP ,0,se101\lpszServerName,255,@Buffer.s,512,0,0)
IPResult = GetIPbyName (Buffer)
Message ("No : "+ Str(i+1) + " " + Buffer + " --> " + IPResult)
Next
Else
MessageRequester("Info","Failed",0)
EndIf
NetApiBufferFree_(bufptr)
SendMessage_(MMTextBox,$00B6,0,30)
EndProcedure
Vieleicht kann mir das ja jemand etwas zerbröseln und erklären.
Bye Andre
Verfasst: 01.07.2008 09:43
von gnasen
Es handelt sich um eine Api und das alles zu erklären wäre ein bisschen viel, wenn du dich mit Api gar nicht auskennen solltest.
Ansonsten hilft
http://msdn.microsoft.com/en-us/library/aa370623.aspx weiter.
Verfasst: 01.07.2008 10:46
von Elektrolurch
Hi gnasen
Ich werde es mir mal zu Gemüte führen.
Ich benutze ungern Code den ich nicht verstehe.
Danke Andre
Verfasst: 02.07.2008 06:59
von Elektrolurch
Hi All
Ich habe mir mal Die Beschreibung für NetServerEnum_
reingezogen und auch durch "learning by doing" halbwegs verstanden.
Nun habe ich aber nochmal eine Frage zu dem GetLanList.
Wenn ich dieses ausführe kriege ich alle PC's die mit mir im LAN verbunden sind, soweit OK.
Nur hat mein PC noch eine WLAN Verbindung zu einem Musicserver, die wird leider nicht angezeigt.
Dieser Musicserver arbeitet gleichzeitig als Router für andere Geräte, die ebenfalls nicht angezeigt werden, obwohl sie für mich erreichbar sind.
Warum ?
Wie kann man das ändern?
Hat da jemand eine Idee ?
BYe Andre
Verfasst: 07.07.2008 20:51
von Elektrolurch
Hi all
ich bin nun ein wenig weiter.
Mein Programm findet nun alle in meinem Netzwerk aktiven Geräte.
Der Scan läuft von 1 bis 255.
Warum zeigt mir das Programm bei 255 einen positives Ping?
Da ist eigentlich kein Gerät.
Das normale Ping bestätigt mir das Ergebnis.
Hat da jemand eine Erklärung dafür?
Bye Andre
Verfasst: 07.07.2008 22:31
von mk-soft
Wenn Du damit das letzte Byte der IP meinst handelt es sich bei 255 um ein Broadcast. Also an alle Teilnehmer.
FF
Verfasst: 08.07.2008 06:14
von Elektrolurch
Hi mk-soft
Sowas
und ich dachte immer dass man jede Adresse benutzen kann.
Dann kann ich die ja getrost aus dem Scan heraus nehmen.
Ich gestehe im erstem Moment war ich geschockt, wer sich da in meinem Netzwerk tummelt.
Bye Andre