IP Suche

Für allgemeine Fragen zur Programmierung mit PureBasic.
D4uS1
Beiträge: 268
Registriert: 02.09.2006 12:16

IP Suche

Beitrag von D4uS1 »

Ich würde gerne endlich mal die Netzwerkprogrammierung kennenlernen und bin auf dem Gebiet noch totaler Anfänger. Ich habe auch gleich eine spezielle Frage.

Wie kann man nach IP-Adressen im GESAMTEN Netzwerk suchen. Der Befehl NextIPAddress gibt bei mir ausschließlich die eigene IP-Adresse aus. Firewalls sind deaktiviert und die Computer können sich in Windows selber finden.

Eine weitere Frage ist wie ich nach Servern suchen kann. Ich vermute das ein Enger Zusammenhang zu den IPs besteht, weswegen ich die erste Frage vorangestellt hab ;) .

PS: Hab die Forensuche bereits benutzt, aber nichts gescheites gefunden.

lg und einen guten Rutsch
D4uS1
Solltet ihr Rechtschreibfehler finden, dürft ihr diese natürlich gerne behalten ;).
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

im CodeArchiv gibs was, ich habe das selber etwas umgeschrieben:

Code: Alles auswählen

Structure SERVER_INFO_101 
 dwPlatformId.l 
 lpszServerName.l 
 dwVersionMajor.l 
 dwVersionMinor.l 
 dwType.l 
 lpszComment.l 
EndStructure 

#MAX_PREFERRED_LENGTH = -1 
#SV_TYPE_ALL          = $FFFFFFFF 
#NERR_SUCCESS         = 0 
#ERROR_MORE_DATA      = 234 
#MainWindow           = 100 
#MMTB                 = 200 

Global NewList IPinLAN.s()

Procedure GetIPbyName(NameIP.s) 
 TheIPAdress.s 
 pHostinfo = gethostbyname_(NameIP) 
 If pHostinfo
  CopyMemory (pHostinfo, hostinfo.HOSTENT, SizeOf(HOSTENT)) 
  If hostinfo\h_addrtype = #AF_INET 
   While PeekL(hostinfo\h_addr_list+AdressNumber*4) 
    ipAddress = PeekL(hostinfo\h_addr_list+AdressNumber*4) 
    TheIPAdress = StrU(PeekB(ipAddress),0)+"."+StrU(PeekB(ipAddress+1),0)+"."+StrU(PeekB(ipAddress+2),0)+"."+StrU(PeekB(ipAddress+3),0) 
    AddElement(IPinLAN())
    IPinLAN() = TheIPAdress          
    AdressNumber+1 
   Wend 
  EndIf 
 EndIf 
EndProcedure 

; Ermittelt alle Netzwerk IPs
Procedure ExamineNetworkIPs()
 ClearList(IPinLAN())
 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=""
   n=0
   While PeekS(se101\lpszServerName+n,1)
    Buffer + PeekS(se101\lpszServerName+n,1)
    n+2
   Wend
   GetIPbyName(Buffer)
  Next i 
 EndIf 
 NetApiBufferFree_(bufptr) 
 ResetList(IPinLAN())
EndProcedure 

; Springt zur nächsten gefundenen IP
Procedure NextNetworkIP()
 ProcedureReturn NextElement(IPinLAN())
EndProcedure

; Gibt die aktuelle IP aus
Procedure.s GetNetworkIP()
 ProcedureReturn IPinLAN()
EndProcedure
Und so erhältst du dann die IPs im LAN

Code: Alles auswählen

InitNetwork()

ExamineNetworkIPs()
While NextNetworkIP()
 Debug GetNetworkIP()
Wend
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
D4uS1
Beiträge: 268
Registriert: 02.09.2006 12:16

Beitrag von D4uS1 »

Wow das ging schnell!!!!!

:shock:


Vielen Vielen Dank :allright:
Solltet ihr Rechtschreibfehler finden, dürft ihr diese natürlich gerne behalten ;).
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Hier, bitte sehr, auch noch eine Funktion von mir:

http://www.purebasic.fr/german/viewtopi ... highlight=
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten