Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Gerade aktive LAN-IP ermitteln (https://www.delphipraxis.net/131725-gerade-aktive-lan-ip-ermitteln.html)

TheMiller 29. Mär 2009 23:08


Gerade aktive LAN-IP ermitteln
 
Hallo,

manchmal kommt es ja vor, dass in einem PC mehrere LAN-Adapter vorhanden sind. Oftmals - so mache ich das zum Beispiel, wenn ich Netze einrichte - haben die Geräte feste IP-Adressen.

Also sagen wir mal, die Netzwerkkarte bekommt eine feste IP Adresse und der WLAN-Adapter (weil der auch für andere Netze verwendet wird), bezieht eine dynamische Adresse über DHCP.

Wie kann ich jetzt feststellen, welche IP-Adresse gerade benutzt wird. Ich möchte nicht alle IPs ermitteln, sondern entweder die statische, wenn das Netzwerkkabel drin ist, oder die DHCP vom WLan, wenn grad über WLan gesurft wird.

Ich hoffe, ihr habt verstanden, was ich meine. Wie muss ich diese Sache angehen?

Danke!

RWarnecke 30. Mär 2009 05:32

Re: Gerade aktive LAN-IP ermitteln
 
Du könntest über den LinkSpeed gehen. Diesen kannst Du mit MSDN-Library durchsuchenGetAdaptersAddresses ermitteln. Dieser Befehl geht aber nur ab Windows XP.

sx2008 30. Mär 2009 08:41

Re: Gerade aktive LAN-IP ermitteln
 
Du musst einen Server im Internet nach deiner IP-Adresse fragen.
z.B:
http://www.ip-adress.com/
http://www.wieistmeineip.de/
die Webseiten per HTTP abfragen und das Ergebnis auswerten.
Es gibt auch Webserver, die als Antwort nur deine IP-Adresse liefern und so den Aufwand für das Auswerten reduzieren (habe aber grad keine URL parad).

rwachtel 30. Mär 2009 09:03

Re: Gerade aktive LAN-IP ermitteln
 
Zitat:

Zitat von sx2008
Du musst einen Server im Internet nach deiner IP-Adresse fragen. [...]

Es geht doch um die lokale IP...

Dabei ist aber durchaus auch zu berücksichtigen, dass PCs mit mehreren (gleichzeitig aktiven) LAN-Karten auch in mehreren (Sub)netzen tätig sein können. Hier ist dann zu definieren, was man eigentlich wissen will.

TheMiller 30. Mär 2009 09:44

Re: Gerade aktive LAN-IP ermitteln
 
Danke für die Antworten.

Ich möchte folgendes erreichen. Ich habe ein Verwaltungsprogramm für ein Büro geschrieben. Das benutzen dort ca 10 User. Dort habe ich ein kleines Nachrichtensystem eingebaut, welches über idTCPClient / Server funktioniert.

Da alle eine feste IP haben ist das alles wunderbar. Nur der Chef und ich gehen auch über VPN ins Netz und bekommen bei VPN eine neue IP, die somit nicht in der Datenbank hinterlegt ist.

Nun sollte folgendes passieren: Beim Einloggen ins Programm soll die LAN-IP gesucht und in die DB eingetragen werden, sodass die User mir und dem Chef schreiben können, egal ob wir per VPN oder "normal" im Lan angemeldet sind.

TheMiller 15. Jun 2009 15:13

Re: Gerade aktive LAN-IP ermitteln
 
Hat noch jemand eine Idee? Das Problem besteht immernoch...

rwachtel 15. Jun 2009 15:23

Re: Gerade aktive LAN-IP ermitteln
 
Zitat:

Zitat von DJ-SPM
Hat noch jemand eine Idee? Das Problem besteht immernoch...

http://www.google.de/search?q=delphi+enumerate+local+ip

// Edit: Was ich nicht ganz verstehe: wenn Ihr Euch an dem Server (dessen IP ja bekannt ist) von dem Client anmeldet, dann weiss der Server doch, welche IP der entsprechende Client hat. Warum muss es der Client denn auch wissen?

TheMiller 15. Jun 2009 15:28

Re: Gerade aktive LAN-IP ermitteln
 
Ok danke,

aber was ist mit meinem Szenario? Wenn ich eine VPN-IP habe und eine LAN-IP. Ich wüsste, welche IP ich auswählen muss, aber andere Benutzer wissen das nicht unbedingt...

Wir melden uns nicht an einem Server an. Das Programm verbindet sich nur zu einer DB, die auf einem Linux-Server läuft. Der Linux-Server hat nichts mit der Authentifizierung zu tun.

Ich schreibe die IP bei jeder Anmeldung in die DB, aber bei PCs mit mehreren IPs (VPN etc.) weis ich nicht, wie ich die richtige IP erwische, oder ist das egal?

Angenommen, ich habe die lokale 192.168.4.1 und die VPN-Adresse 10.0.0.1, würde die Anfrage durch Eingabe beider Adressen bei mir landen? Dann wäre es ja wirklich egal. Ich kann es nur grad nicht testen...

rwachtel 15. Jun 2009 15:34

Re: Gerade aktive LAN-IP ermitteln
 
Ich habe irgendwie das Gefühl, dass das entwickelte Kommunikationssystem unter einem Architekturproblem leidet.

Du schreibst also die eigenen IPs in eine Datenbank, und die anderen Teilnehmer müssen sich für eine Peer-To-Peer-Verbindung die entsprechende IP aus der Datenbank holen?

Wäre eine Nachrichtenzentrale nicht stimmiger? Sonst kann man ja gleich mit net send arbeiten... :mrgreen:

TheMiller 15. Jun 2009 15:57

Re: Gerade aktive LAN-IP ermitteln
 
Kann sein, dass ich grad auf dem Schlauch stehe... Habe glaub ich nicht ganz verstaden, was du meinst.

Falls du meinst, dass ich die Nachrichten doch in die MySQL-DB schreiben soll, habe ich ein paar Probleme mit dieser Lösung: Die Nachricht würde nicht sofort aufpoppen und die DB müsste alle x Sekunden angefragt werden, ob eine Nachricht vorliegt. Das wollte ich vermeiden.

Die eigene IP wird in die DB gespeichert, damit andere User eine P2P-Verbindung mit der Gegenstelle aufbauen und Nachrichten schreiben können.

Die eigene IP wird ja nicht in der DB gespeichert, damit ich meine eigene IP rausfinden kann... das wäre ja auch unlogisch...

rwachtel 15. Jun 2009 16:06

Re: Gerade aktive LAN-IP ermitteln
 
Natürlich sollst Du die Nachrichten nicht in die Datenbank schreiben. Ganz im Gegenteil kannst Du komplett ohne Datenbank arbeiten.

Du hast auf dem Server eine Art Nachrichtenzentrale (Broker) laufen, an der sich die Clients anmelden. Du hast dann keine P2P-Architektur mehr, sondern eine sternförmige, klassische C/S-Architektur. Vorteil wäre dabei, dass der Server das Verteilen der Nachrichten übernimmt, weil er ja immer weiß, ob und wohin die Nachrichten weitergeleitet werden.

Die Clients kennen dabei nicht die IP des Empfängers, sondern den Namen.

Wenn Du jetzt soweit gehst, dass Du bei Unzustellbarkeit (weil gerade im Urlaub oder sonstwie offline) die Nachrichten zwischenspeicherst und auch ein Senden von Nachrichten an alle Benutzer ermöglichst, hast Du auch schon Deinen kleinen, lokalen Twitter-Clone realisiert... :mrgreen:

wicht 15. Jun 2009 16:14

Re: Gerade aktive LAN-IP ermitteln
 
Der Vorschlag von Robert ist auf jedenfall eine gute Idee - wenn ich soetwas für mein Heimnetzwerk oder hier für die Firma bauen sollte könnte ich das auch gar nicht auf deine Art realisieren, da das VPN nur Zugriffe auf einen einzigen Server im LAN erlaubt und die Clients gar nicht untereinander kommunizieren könnten.
Dass alles über einen Server läuft ist wohl das "normale" vorgehen und bringt dir im Endeffekt viele neue Möglichkeiten für weitere Programmfunktionalität, falls mal neue Funktionen hinzugefügt werden was wohl nicht ganz ausgeschlossen ist.
Da wäre z.B. an Gruppen-Chat, gemeinsames Arbeiten an einem Dokument, sehen ob ein User offline oder online ist, Offline-Nachrichten, ..... zu denken... und da fehlt noch einiges.

rwachtel 15. Jun 2009 16:16

Re: Gerade aktive LAN-IP ermitteln
 
Zitat:

Zitat von wicht
[...] gemeinsames Arbeiten an einem Dokument [...]

...na, wir wollen doch nicht Google Wave Konkurrenz machen. :mrgreen:

wicht 15. Jun 2009 16:19

Re: Gerade aktive LAN-IP ermitteln
 
Kenne ich nichtmal. Ich hasse Web 2.0.
Musste nur irgendwie an das gute alte NetMeeting denken, da konnte man so schön zusammen an einem Bild rummalen.. :)

rwachtel 15. Jun 2009 16:24

Re: Gerade aktive LAN-IP ermitteln
 
Zitat:

Zitat von wicht
Kenne ich nichtmal.

Das lässt sich ändern:

http://de.wikipedia.org/wiki/Google_Wave
http://wave.google.com/

Zitat:

Ich hasse Web 2.0.
Ich bin ja auch nicht gerade der Web-Evangelist vor dem Herrn, aber was Google Wave zu leisten vermag ist schon imposant und darf man auch nicht verkennen. Würde mich nicht wundern, wenn das den Markt der Internet-Kommunikation ein wenig aufmischen würde.

TheMiller 15. Jun 2009 19:01

Re: Gerade aktive LAN-IP ermitteln
 
Hm... ok.

Alle raffen's, nur ich nicht... Du sagtest, ich habe auf dem Server eine Nachrichtenzentrale am Laufen. Von welchem Server sprichst du? Von dem Server auf dem die Datenbank läuft? Das ist ein Linux-Server.

Oder meinst du, ich soll in meinem Programm eine Version als Server arbeiten lassen? Das wiederrum wird nicht funktionieren, weil nicht immer alle Rechner online sind.

Vielleicht bin ich grad schwer von Begriff, aber ich versteh es momentan wirklich nicht.

rwachtel 15. Jun 2009 19:09

Re: Gerade aktive LAN-IP ermitteln
 
Zitat:

Zitat von DJ-SPM
[...] Du sagtest, ich habe auf dem Server eine Nachrichtenzentrale am Laufen. Von welchem Server sprichst du? [...]

Nun ja, halt von irgendeinem Server.

Zitat:

[...] Das ist ein Linux-Server. [...]
Ja, und? :mrgreen:

Nein, ernsthaft: man kann solch einen (ich nenn es jetzt mal so) Nachrichten-Server auch für Linux entwickeln. Nur halt nicht mit Delphi (okok, mit Delphi Prism kann man auch für Mono entwickeln - was übrigens sehr fein funktioniert, allerdings habe ich damit noch nie Socket-Programmierung gemacht). Aber es gibt ja genügend Alternativen.

TheMiller 15. Jun 2009 19:17

Re: Gerade aktive LAN-IP ermitteln
 
Hm ok. Dann habe ich verstanden, was du meintest. In naher Zukunft bekommen wir noch einen Windows-Server. So kann ich in Ruhe überlegen und Entwickeln. Linux-Entwicklung wäre zwar auch eine Alternative, aber dafür fehlt mir die Einarbeitungszeit.

Oder ich versuche, beim Einloggen in mein Programm statt die IP des Clients einfach den Rechnernamen zu speichern und lasse die Clients dann einfach an die Rechnernamen ihre Nachrichten senden. Vielleicht funktioniert das...

Besten Dank

Orko 15. Jun 2009 20:15

Re: Gerade aktive LAN-IP ermitteln
 
hi ho

bin mir nicht sicher ob ich alles richtig verstanden habe aber wie wäre es wenn du mit hilfe von
der indy Komponente IdIPwatch die momentane ip des jeweiligen rechners ermittelst und diese dann an
deine DB weiter gibst. das hätte den vorteil das keiner deiner user überhaupt was eingeben muss :)
und dein vpn problem löst sich damit auch vlt. :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz