system("ping 192.168.0.1")
-
unsigned tip[4]; struct hostent *he; he = gethostbyname(q); if (he != NULL) { (void)memcpy(tip, he->h_addr_list[0], 4);
Reicht das ?
mfg Oliver Kern.
-
Vielen Dank aber bei mir kommt folgender fehler:
error LNK2001: Nichtaufgeloestes externes Symbol __imp__gethostbyname@4
ich hab nur die iostream.h und die winsock2.h eingebunden
ciao björn
-
iostream.h gibts nicht, dafuer aber google.
-
wie gibts net?????????
die benutze ich doch schon die ganze zeit!
-
#include <ws2tcpip.h>
#pragma comment( lib, "ws2_32.lib" )das sollte auch im quellcode stehen.
mfg Oliver Kern.
-
wie gibts net?????????
Nicht mehr. Siehe dazu: http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=iostream#Answ
MfG SideWinder
-
ok vielen dank.
also das programm laüft jetzt bei mir:
#include <iostream.h> #include <winsock2.h> #include <ws2tcpip.h> #pragma comment( lib, "ws2_32.lib" ) int main() { unsigned tip[4]; struct hostent *he; he = gethostbyname("localhost"); if (he != NULL) { (void)memcpy(tip, he->h_addr_list[0], 4); } return 0; }
jedoch wie kann ich nun die ermittelte ip adresse in einer variablen speichern?
-
Hi
Die steht doch in der Variablen tip.
-
ja, aber in welchem format wie kann ich daraus xxx.xxx.xxx.xxx machen?
mfg björn
-
Die ist doch schon in dem Format.
Ich glaube du solltest dir nochmal das Kapitel über Arrays durchlesen.tip ist ein Array mit 4 Elementen. Eine IP hat 4 Zahlen. Erkennst du nicht den Zusammenhang?
Und nochmal:
<iostream**.h**> ist falsch!
-
hi
also wenn ich z.b. cout << tip[0]; oder cout << tip; oder cout << tip[2];
es kommt immer 0x00000000 raus.
dsas es sich um ein array handelt weiss ich schon.
ps: wieso funktioniert dann bei mit iostream nicht und iostream.h doch ?
ciao
-
Hallo BamBam,
versuch mal diesen Code !!!
#include <iostream.h> #include <stdio.h> #include <winsock2.h> #include <ws2tcpip.h> #pragma comment( lib, "ws2_32.lib" ) static struct sockaddr_in _bind; int startWinsock(void); int main() { unsigned char tip[4]; struct hostent *he; long rc; int sock; rc=startWinsock(); if(rc!=0) { printf("Fehler: startWinsock, fehler code: %d\n",rc); } memset(&_bind,0, sizeof(SOCKADDR_IN) ); _bind.sin_family = AF_INET; sock = socket(AF_INET, SOCK_DGRAM, 0); if (sock<0) { printf("Kann nicht Socket Öffnen!\n"); exit(1); } he = gethostbyname("dig531.dyndns.rg"); if (he != NULL) { (void)memcpy(tip, he->h_addr_list[0], 4); printf("IP-Adresse: %d.%d.%d.%d\n",tip[0],tip[1],tip[2],tip[3]); } else { printf("Kann Hostname nicht aufloesen!\n"); } return 0; } int startWinsock(void){ WSADATA wsa; return WSAStartup(MAKEWORD(2,0),&wsa); }
mfg Oliver Kern.
-
Nimm <iostream> und nicht <iostream.h>!
Damit das bei dir funktioniert, schreib unter das include noch "using namespace std;":#include <iostream> using namespace std;
-
Was hat das mit Standard-C++ zu tun?
-
diese Rubrik ist doch C/C++ oder ?!?!
Und der Code ist nun mal C!
oder gibt es eine eigene Plattform -> C ?
mfg Oliver Kern.