Seite 1 von 1
IP Suche
Verfasst: 31.12.2008 15:19
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
Verfasst: 31.12.2008 15:52
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
Verfasst: 31.12.2008 16:51
von D4uS1
Wow das ging schnell!!!!!
Vielen Vielen Dank

Verfasst: 31.12.2008 17:14
von AND51