Am 20.05.2022 bekommt das Forum ein neues Update. Ab ca. 12:00 ist das Forum nicht mehr erreichbar und wird spätestens am 21.05. wieder online sein. Alle bis dahin erstellten Daten bleiben natürlich erhalten.

Vielen Dank für euer Verständnis. Bei Rückfragen: webmaster@linux-club.de (Christian)

Lokale IP-Adresse

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
profmaad

Lokale IP-Adresse

Beitrag von profmaad »

Hallo alle miteinander,

ich stehe bei meinem derzeitigen Projekt vor einem Problem:
Ich muss die IP-Adresse des ausführenden Rechners herausfinden, ohne dass ich vorher eine Verbindung über ein Netzwerk aufgenommen habe.

Kann mir jemand Tips geben, ob es dafür Funktionen gibt oder wie es funktionieren könnte.

Danke im Voraus und Ciao,

Prof. MAAD
Benutzeravatar
Link
Newbie
Newbie
Beiträge: 32
Registriert: 12. Feb 2006, 15:56
Wohnort: Gelsenkirchen
Kontaktdaten:

Beitrag von Link »

Ich verstehe dich nicht so ganz...
Hast du mehrere Rechner? An welchem sitzt du?
Benutzeravatar
Bartlin
Member
Member
Beiträge: 68
Registriert: 25. Dez 2005, 20:44
Wohnort: Berlin

Beitrag von Bartlin »

IP-Adresse des ausführenden Rechners
*am Kopf kratz*
Wie jetzt? Also ein Rechner führt etwas aus und ein anderer Rechner bekommt das Ergebnis - jedoch ohne dass er weiß, dass da noch ein Rechner ist, der ihm dieses Ergebnisz erzeugt???
*verwirrt bin*
profmaad

Beitrag von profmaad »

Folgende Situation:
Ich habe ein Programm. Dieses muss die IP des Rechners herausfinden, auf dem es ausgeführt wird (also die lokale IP).

Der Hinweis auf die Netzwerkverbindung war so gemeint, dass es sehr einfach ist, die eigene IP herauszufinden, wenn das Programm erst einmal eine Netzwerk-Verbindung aufgenommen hat.

Danke im Voraus und Ciao,

Prof. MAAD
Grothesk
Ultimate Guru
Ultimate Guru
Beiträge: 14662
Registriert: 26. Okt 2003, 11:52
Wohnort: Köln

Beitrag von Grothesk »

Wenn der Rechner mit DHCP angebunden ist dann hat der keine IP wenn er nicht im Netz hängt, afaik.
Wenn statische IP, dann kannst du das mit ifconfig wohl auslesen.

[Edit:] typo
Zuletzt geändert von Grothesk am 7. Mär 2006, 20:30, insgesamt 1-mal geändert.
"Die Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen. Allerdings ist sie nicht OpenSource, d.h. du sollst sie nicht verändern oder in veränderter Form veröffentlichen."
Benutzeravatar
Link
Newbie
Newbie
Beiträge: 32
Registriert: 12. Feb 2006, 15:56
Wohnort: Gelsenkirchen
Kontaktdaten:

Beitrag von Link »

ich wüsste nicht wieso es einfacher ist seine IP herauszubekommen wenn man eine LAN-Verbindung hat :roll:
Jenachdem welche Distri du nutzt und wie dein Programm arbeitet kannst du mit ifconfig, ip address show oder einfach den Eintrag in der entsprechenden Datei nutzen.

Und wie gesagt! Voraussetzung ist das du ne statische IP nutzt! KEIN dhcp!!!
profmaad

Beitrag von profmaad »

Danke erstmal, aber scheinbar muss ich die Situation noch mal klar stellen:
Ich habe ein Programm. Dieses wird auf einem Rechner ausgeführt.
Es kann davon ausgegangen werden, dass der Rechner eine aktive Netzwerk-Verbindung hat, da es sich um ein Server-Programm handelt.

Nun muss das Programm die IP des Rechners ermitteln, auf dem es ausgeführt wird.
Soweit das zu lösende Problem.

Nun noch einmal zu dem Hinweis bezüglich der Vereinfachung des Ganzen, wenn dass Programm bereits eine Netzwerkverbindung aufgenommen hat:
Ich benutze das Qt-Framework (www.trolltech.com). Dieses stellt mir unter anderem eine Klasse für TCP-Sockets bereit (QTcpSocket).
Diese bietet eine Funktion, die, im verbundenen Zustand des Sockets, die eigene IP liefert. Somit ist es mir sehr einfach, die IP herauszufinden, wenn ich erst einmal ein aktives TCP-Socket habe.
Dies ist jedoch nicht der Fall, da die eigene IP schon vorher ermittelt werden muss!

So, ich hoffe jetzt ist die Situation klar.

Danke im Voraus und Ciao,

Prof. MAAD
Grothesk
Ultimate Guru
Ultimate Guru
Beiträge: 14662
Registriert: 26. Okt 2003, 11:52
Wohnort: Köln

Beitrag von Grothesk »

Code: Alles auswählen

ip address show
Ist doch schon erwähnt worden...
"Die Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen. Allerdings ist sie nicht OpenSource, d.h. du sollst sie nicht verändern oder in veränderter Form veröffentlichen."
Benutzeravatar
framp
Moderator
Moderator
Beiträge: 4362
Registriert: 6. Jun 2004, 20:57
Wohnort: bei Stuttgart
Kontaktdaten:

Beitrag von framp »

Code: Alles auswählen

AWK=`which awk`
IFCONFIG="which ifconfig"
SED=`which sed`
NIC="dsl0" # adapt nic
IP="`$IFCONFIG $NIC 2>/dev/null|$AWK '/inet addr:/ {print $2}'|$SED 's/addr://'`"
Irgendwo hier im Forum habe ich noch eine elegantere Loesung gefunden...nur weiss ich nciht mehr wo -> suchen
profmaad

Beitrag von profmaad »

Danke erstmal,
aber das richtige war irgendwie noch nicht dabei.

Ich brauche keine Programme, die meine IP ausspucken (das krieg ich auch noch "grade so" hin).

Mein Programm ist in C++ geschrieben, ich bräuchte also ein C++-Code-Fragment, das die eigene IP ermittelt.

So, ich hoffe, jetzt ist wirklich alles klar.

Danke im Voraus und Ciao,

Prof. MAAD
Benutzeravatar
Link
Newbie
Newbie
Beiträge: 32
Registriert: 12. Feb 2006, 15:56
Wohnort: Gelsenkirchen
Kontaktdaten:

Beitrag von Link »

Hättest du das mal gleich gesagt ;-) Dann wäre vieles einfacher gewesen und vor allem hätte dann evtl. jemand mit c++ kenntnissen hier antworten können...
Benutzeravatar
framp
Moderator
Moderator
Beiträge: 4362
Registriert: 6. Jun 2004, 20:57
Wohnort: bei Stuttgart
Kontaktdaten:

Beitrag von framp »

:shock: :shock: :shock:
Sorry - ein Titel sollte aussagekraeftig sein - und der Post noch mehr. Dann musst Du Dich nicht wundern ueber keine oder nicht helfende Antworten.

Mein Tip: Aendere den Titel in 'Wie die IP des lokalen Rechners mit C++herausfinden' :wink:
Benutzeravatar
endor
Member
Member
Beiträge: 79
Registriert: 1. Sep 2005, 11:07
Wohnort: Berlin
Kontaktdaten:

Beitrag von endor »

ich kann leider auch nicht c++ programmieren. vielleicht hilft dir das:
http://www.chip.de/c1_forum/thread.html ... did=422380
es lies sich erstmal so als ob es nur windowsbasierend waere, aber vielleicht klappt das ja fuer linux aehnlich.
jengelh
Guru
Guru
Beiträge: 4039
Registriert: 20. Nov 2004, 17:42
Kontaktdaten:

Beitrag von jengelh »

`ip a` (noch krasser als `ip address show`) und den Sourcecode zu iputils fuer C++-Leute.
Benutzeravatar
TeXpert
Guru
Guru
Beiträge: 2166
Registriert: 17. Jan 2005, 11:22

Beitrag von TeXpert »

ist zwar C aber ich hab mal in meinen Snippets gekramt...

Code: Alles auswählen

/** 
  * hack to grab interface information 
  */

#include <sys/socket.h> 
#include <net/if.h> 
#include <netinet/in.h> 
#include <stdio.h> 
#include <stdlib.h> 


#define SIOCGIFCONF     0x8912          /* get iface list               */

int main(int argc, char *argv[]) { 
  int numreqs = 30, sd, n, tick, found=0;
  struct ifconf ifc; 
  struct ifreq *ifr; 
  struct in_addr *ia;

  sd=socket(AF_INET, SOCK_STREAM, 0); 
  ifc.ifc_buf = NULL; 
  ifc.ifc_len = sizeof(struct ifreq) * numreqs; 
  ifc.ifc_buf = realloc(ifc.ifc_buf, ifc.ifc_len); 
  
  if (ioctl(sd, SIOCGIFCONF, &ifc) < 0) { 
    exit(1);
  } 
  
  ifr = ifc.ifc_req; 
  
  for (n = 0; n < ifc.ifc_len; n += sizeof(struct ifreq)) { 
    ia= (struct in_addr *)((ifr->ifr_ifru.ifru_addr.sa_data)+2); 

    fprintf(stdout, "%6s %-15s\n", ifr->ifr_ifrn.ifrn_name, inet_ntoa(*ia));
   
    ifr++; 
  }

  free(ifc.ifc_buf);
  return 0;
}

 

Code: Alles auswählen

# to resolve all your problems, try this:
HOWTO='pack c5,41*2,sqrt 7056,unpack(c,H)-2,oct 115' && perl -le "print $HOWTO"
Ich beantworte keine Supportfragen per PM!
jengelh
Guru
Guru
Beiträge: 4039
Registriert: 20. Nov 2004, 17:42
Kontaktdaten:

Beitrag von jengelh »

Der moderne Weg waere ueber netlink... :!:
Benutzeravatar
TeXpert
Guru
Guru
Beiträge: 2166
Registriert: 17. Jan 2005, 11:22

Beitrag von TeXpert »

jengelh hat geschrieben:Der moderne Weg waere ueber netlink... :!:
das natürlich phantastisch Dokumentiert ist ;) *grins* hast Du einen guten Pointer auf Doku, die != Kernel-Source-Code ist?

im Prinzip stimme ich Dir zu, aber das ist irgendwie nicht in meinem Sinne Dokumentiert ;)

Code: Alles auswählen

# to resolve all your problems, try this:
HOWTO='pack c5,41*2,sqrt 7056,unpack(c,H)-2,oct 115' && perl -le "print $HOWTO"
Ich beantworte keine Supportfragen per PM!
Antworten