# [C++] IP Ausgeben



## errox (12. Oktober 2007)

Hallo,
ich wollte fragen, ob mir jemand mitteilt wie Ich meine IP Adresse auf einer win32 Konsolenanwendung ausgebe.

Danke für antworten

MfG errox


----------



## Stef113 (12. Oktober 2007)

Bei Suchen im Internet habe ich diese Seite gefunden: http://www.c-plusplus.de/forum/viewtopic-var-t-is-141582.html (unten ist der Quellcode)


----------



## errox (13. Oktober 2007)

Danke für deine schnelle antwort. Leider, bringt sie mir nicht da die funktion ioctl für Linux ist.

Source:


```
#include "stdafx.h"
#include <iostream>
#include <winsock.h>
#include <windows.h>




int main(void)
{
	int sock_fd = socket( AF_INET , SOCK_DGRAM , 0 );
	if( sock_fd == -1 ) { printf("Error: creating socket.\n"); exit(1); }
	struct ifreq ifr;
	strcpy( ifr.ifr_name , interface );
	if( ioctl( sock_fd , SIOCGIFADDR , &ifr ) == -1 ) { printf("problems with ioctl.\n"); exit(1); }
	ip->saddr = inet_addr( inet_ntoa( ((struct sockaddr_in *) (&ifr.ifr_addr))->sin_addr ) );
	close( sock_fd );
}
```

Fehler:



> Warning	1	warning C4244: 'initializing' : conversion from 'SOCKET' to 'int', possible loss of data	c:\c++ u c#\c++\projekte\ip\ip\ip.cpp	14
> Error	6	error C3861: 'ioctl': identifier not found	c:\c++ u c#\c++\projekte\ip\ip\ip.cpp	18
> Error	11	error C3861: 'close': identifier not found	c:\c++ u c#\c++\projekte\ip\ip\ip.cpp	20
> Error	3	error C2228: left of '.ifr_name' must have class/struct/union	c:\c++ u c#\c++\projekte\ip\ip\ip.cpp	17
> ...



Meine IDE ist VS 2005

Gruß errox


----------



## Imod (15. Oktober 2007)

würde mich auch interesiern


----------



## sand13r (16. Oktober 2007)

Bei meiner suche bin ich auf das hier gestossen, ich habe es schon ausprobiert und nach anfänglichen Schwierigkeiten dann doch zum Laufen gebracht und gedacht ich Poste es mal.




```
#include "stdafx.h"
#include <conio.h>
#include <iostream.h>
#include <windows.h> 

#pragma comment(lib,"ws2_32.lib")  // für MSV C++  

int main(int argc, char* argv[])
{
	
	
	
	
	 char hostname[255]; 
	 char *szIPAddress; 
	 WORD wVer; 
	 WSADATA wData; 
	 PHOSTENT hostinfo; 
	 wVer = MAKEWORD( 2, 0 ); 

	 if ( WSAStartup( wVer, &wData ) == 0 ) 
	 { 
	  if( gethostname ( hostname, sizeof(hostname)) == 0) 
	  { 
	   if((hostinfo = gethostbyname(hostname)) != NULL) 
	   { 
		szIPAddress = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list); 
	   } 
	  } 
	 WSACleanup(); 
	 }  

	 cout<<szIPAddress<<endl; 
	 getch();
	 return 0;
}
```


hoffe das Hilft ^^

hier übrigens noch die Quelle dazu (will mich ja nicht mit fremden Federn schmücken^^)

hier^^

greetz sand13r


----------



## Imod (16. Oktober 2007)

Hey

woher bekomme ich die : stdafx.h ?

Mfg D©MI


----------



## deepthroat (16. Oktober 2007)

Hi.





Imod hat gesagt.:


> Hey
> 
> woher bekomme ich die : stdafx.h ?


Die Datei brauchst du eigentlich nicht. Die wird vom Visual Studio automatisch generiert.

Gruß


----------



## errox (16. Oktober 2007)

> Error	4	error C2065: 'PHOSTENT' : undeclared identifier	c:\c++ u c#\c++\projekte\ip\ip\ip.cpp	17
> Error	3	error C2065: 'wData' : undeclared identifier	c:\c++ u c#\c++\projekte\ip\ip\ip.cpp	16
> Error	1	error C2065: 'WSADATA' : undeclared identifier	c:\c++ u c#\c++\projekte\ip\ip\ip.cpp	16
> Error	5	error C2146: syntax error : missing ';' before identifier 'hostinfo'	c:\c++ u c#\c++\projekte\ip\ip\ip.cpp	17
> ...



Das is doof. Ich will doch blos meine ip auf der console ausgeben ( NUR MEINE IP )


----------



## deepthroat (17. Oktober 2007)

Hi.

Sonst bekommst du aber keine Fehlermeldungen (Header Dateien können alle gefunden werden?)?

Gruß


----------



## errox (17. Oktober 2007)

ja? Wieso auch nicht?


----------



## sand13r (17. Oktober 2007)

moinsen Freunde der Sonne,

ja wie ich oben angedeutet habe hatte ich zuerst auch so meine Schwierigkeiten.. weil er dann plötzlich gar nix mehr kannte kein cout kein getch.. ich habe dann eine neues Projekt win32 consolen apllication gemacht und dann die main gealssen dort den Quelltext der anderem main reinkopiert dann laufengelassen.
Dann kammen natürlich lauter Fehler die ich dann aber nacheinander durch einzelnens includieren der Header beseitigt habe.
Keine Ahnung wieso es nicht auf Anhieb ging aber kannst es ja auch mal versuchen.


gruss sonnen könig sand13r


----------



## deepthroat (17. Oktober 2007)

errox hat gesagt.:


> ja? Wieso auch nicht?


Weil du ja evtl. das Platform SDK nicht installiert hast.

Es ist ja doch etwas merkwürdig das bei dir die in der windows.h definierten Typen nicht gefunden werden können.

Ich hab's jetzt mal etwas an Standard C++ angepaßt und mit MinGW kompiliert:
	
	
	



```
#include <iostream>

#include <windows.h> 

// #pragma comment(lib,"ws2_32.lib")  // für MSV C++  

using namespace std;

int main(int argc, char* argv[])
{
	
	 char hostname[255]; 
	 char *szIPAddress; 
	 WORD wVer; 
	 WSADATA wData; 
	 PHOSTENT hostinfo; 
	 wVer = MAKEWORD( 2, 0 ); 

	 if ( WSAStartup( wVer, &wData ) == 0 ) 
	 { 
	  if( gethostname ( hostname, sizeof(hostname)) == 0) 
	  { 
	   if((hostinfo = gethostbyname(hostname)) != NULL) 
	   { 
		szIPAddress = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
		
		if (szIPAddress != 0) 
			cout<<szIPAddress<<endl; 

	   } 
	  } 
	 WSACleanup(); 
	 }  

	 cin.get();

	 return 0;
}
```
Gruß


----------



## Imod (18. Oktober 2007)

hey,

Das kommt bei mir :

http://img233.imageshack.us/img233/6046/fehlergm3.jpg


Was soll ich tun?

Mfg Domi


----------



## deepthroat (18. Oktober 2007)

Imod hat gesagt.:


> Was soll ich tun?


Du mußt natürlich die Bibliothek ws2_32 im Projekt zu den Bibliotheken hinzufügen.

Gruß


----------



## errox (18. Oktober 2007)

Es kann doch eigentlich nicht so schwer sein seine eigene ip auf eine konsole auszugeben, oder?


----------



## sand13r (19. Oktober 2007)

Moinsen Freunde der Sonne,


ja schwer is relativ  da du denk ich mal nicht manuell auf die Netzwerkkarte zugreifen willst um die IP auszulesen musst du eben mit einer Funktion nachhelfen die das bietet.
Hätte auch gehofft das Windows bzw. DOS einen Befehl dafür bietet aber dem scheint ja leider nicht so zu sein.. bzw eben nur fürs Auge mit ipconfig aber das bringt ja nix wenn du damit (in nem C++ Programm )arbeiten willst.

läuft es denn schon? also mit dem Code oben mein i jetzt.. lagerst es eben in ne Funktion aus die dann aufrufst  dann siehts au wieder aus als obs einfach wäre  hinter ner Funktion steckt ja immer ein mehr oder weniger nicht ganz leichter Code 

greetz da sand13r


----------



## iderise (19. Oktober 2007)

Also ich habs mal getestet
kommt zwar nur meine proxyip (was auch sonst) raus aber es geht

(
#include <winsock2,h>
wirkt wunder
)


----------



## Imod (19. Oktober 2007)

woher bekomm ich die?


----------



## errox (21. Oktober 2007)

```
// IP.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <windows.h>
#include <conio.h>
#include <iostream>
#include <winsock2.h>
using namespace std;
#pragma comment(lib,"ws2_32.lib")  // für MSV C++

int main()
{
 char hostname[255];
 char *szIPAddress;
 WORD wVer;
 WSADATA wData;
 PHOSTENT hostinfo;
 wVer = MAKEWORD( 2, 0 );

 if ( WSAStartup( wVer, &wData ) == 0 )
 {
  if( gethostname ( hostname, sizeof(hostname)) == 0)
  {
   if((hostinfo = gethostbyname(hostname)) != NULL)
   {
    szIPAddress = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
   }
  }
 WSACleanup();
 } 

  cout<<szIPAddress<<endl;
  getch();
  return 0;
}
```

Da kommt nur meine lan ip ( 192.168.1.100 ) ((((((


----------



## Imod (22. Oktober 2007)

errox hat gesagt.:


> Es kann doch eigentlich nicht so schwer sein seine eigene ip auf eine konsole auszugeben, oder?


woher bekommn ich die bibiolothek hab dev c++


----------



## deepthroat (22. Oktober 2007)

Imod hat gesagt.:


> woher bekommn ich die bibiolothek hab dev c++


Die Bibliothek ist bei Dev-C++ schon dabei.

Gruß


----------



## Imod (22. Oktober 2007)

Es kommt : 4 C:\Dev-Cpp\main.cpp stdafx.h: No such file or directory.


----------



## errox (22. Oktober 2007)

stdafx.h ist von visual studio / vc++


----------



## deepthroat (22. Oktober 2007)

Imod hat gesagt.:


> Es kommt : 4 C:\Dev-Cpp\main.cpp stdafx.h: No such file or directory.


stdafx.h ist keine Bibliothek sondern eine Header-Datei. Und wie ich dir bereits gesagt habe, brauchst du diese Datei nicht #include-n da sie nur für Visual Studio interessant ist.

Gruß


----------

