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. :allright:

Ich benutze ungern Code den ich nicht verstehe. 8)

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. 8)
Nur hat mein PC noch eine WLAN Verbindung zu einem Musicserver, die wird leider nicht angezeigt. :evil:
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 :freak:
und ich dachte immer dass man jede Adresse benutzen kann.

Dann kann ich die ja getrost aus dem Scan heraus nehmen. :allright:

Ich gestehe im erstem Moment war ich geschockt, wer sich da in meinem Netzwerk tummelt. :lol: :lol: :lol: :oops:

Bye Andre