system("ping 192.168.0.1")
-
Hi
leider kenn ich mich noch nicht gut mit c++ und api's aus.
was muss ich denn machen um das ganze mit der os-api zu machen?
und wie geht diese umleitung?ciao Björn
ps: vielen dank
-
Erstmal musst du herausfinden unter welchen OS du arbeitest!
-
Hi
Jo, wenn du das rausgefunden hast, baust du n ICMP ECHO Reqest Packet und schickst es an den Host den du pingen willst, und wartest auf die Reply und fertig.
Dazu gibts Tutorials oder aber wenn du unter Linux arbeiten solltest, schaust du dir einfach die ping oder traceroute source an.
-
mit der Funktion gethostbyname sollte es auch gehen.
mfg Oliver Kern.
-
was heisst auch? das ist im vorherigen vorschlag schon enthalten, ist win-api.
das mit dem umleiten geht so: system("ping 127.0.0.1 >output.txt");
dann beispielsweise nach dem soundsovielten % zeichen suchen und sehen, ob nicht 0 davor steht.
-
welche datei muss ich denn für gethostbyname einbinden? winsock2.h?
mfg
björn
-
habe noch ein problem bemerkt was gibt diese funktion zurück bzw. wie kann ich den rückgabewert denn speichern.
-
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;