IP kriegen ?? GetHostByName
-
#include <windows.h> #include <conio.h> #include <iostream> 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; }
GetHostByName() soll undefiniert sein, aba ich finde den void net
Kann mir jemand helfen oda mich zurchtweisen ? ^^
-
Ich verstehe dein Problem / Frage nicht.
Stell sie präziser.
Simon
-
Ok dann versuch ich es nochmal XD
if( gethostname ( hostname, sizeof(hostname)) == 0)
soll undefiniert sein
also muss ja eine definition von "gethostbyname" zu finden sein ^^
und ich finde die net
-
http://msdn.microsoft.com/en-us/library/ms738527.aspx
1. winsock2.h inkludieren
2. ws2_32.lib linken (ist bei Dir auskommentiert)Simon
-
theta schrieb:
http://msdn.microsoft.com/en-us/library/ms738527.aspx
1. winsock2.h inkludieren
2. ws2_32.lib linken (ist bei Dir auskommentiert)Simon
ok hab ich gemacht jetzt sieht es so aus:
#include <iostream.h> #include <winsock.h> #include <winsock2.h> #pragma comment(lib, "ws2_32.lib") int doit(int, char **) { char ac[80]; if (gethostname(ac, sizeof(ac)) == SOCKET_ERROR) { cerr << "Error " << WSAGetLastError() << " when getting local host name." << endl; return 1; } cout << "Host name is " << ac << "." << endl; struct hostent *phe = gethostbyname(ac); if (phe == 0) { cerr << "Yow! Bad host lookup." << endl; return 1; } for (int i = 0; phe->h_addr_list[i] != 0; ++i) { struct in_addr addr; memcpy(&addr, phe->h_addr_list[i], sizeof(struct in_addr)); cout << "Address " << i << ": " << inet_ntoa(addr) << endl; } return 0; } int main(int argc, char *argv[]) { WSAData wsaData; if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0) { return 255; } int retval = doit(argc, argv); WSACleanup(); return retval; }
undefined reference GetHostName@8
undefined reference WSAGetLastError@0
undefined reference GetHostByName@4
undefined reference inet_ntoa @4
undefined reference WSAStartup@8
undefined reference WSACleanup@0Hat sich nix geändert
PS: Ich benutze CODE:BLOCKS
-
Bearfist schrieb:
#pragma comment(lib, "ws2_32.lib")
DAS geht glaube ich nur mit MS-Compilern. Das wirst Du mit CodeBlocks anders lösen müssen.
-
Wenn Du mit Deinem CodeBlocks den MinGW benutzt, dann heißt die lib dort: libws2_32.a
Wie man CodeBlocks dazu bewegt, die mitzulinken, weiß ich nicht, frag mal im entsprechenden Forum nach.
Ansonsten kannst Du das Programm auf der Kommandozeile mit:
g++ prog.cpp -lws2_32 -o prog.exe
selbst erstellen.
-
Aso ok..
hab mir jez Visual Studio 2008 von MS runtergeladen
...werds ma da versuchen