Server online/offline
-
Hallo,
ich würde gerne mit einem C++ WindowsProgramm kontrolieren ob verschiedene Dienste (z.B. Apache, MySQL, TS, IRC, FTP, ...) auf meinem Server online oder offline sind.
bisher hab ich sowas immer in TCL geschrieben, aber nun wollte ich das ganz in C++ machen.
Nur hab ich keine Ahnung wie ich eine Socket verbindung in C++ aufbauen kann.könnte mir das vllt. mal jemand anhand eines Beispieles mit den untenstehenden daten zeigen?
Apache:
IP: 123.123.123.123
Port: 80Ich hab mir da ne Funktion vorgestellt, die 1 zurückliefert wenn der dienst online ist, und 0 wenn er offline ist.
Währe euch sehr dankbar
Weble
-
kannste auch selber machen. wie es geht steht im internet.
-
und im winapi forum (bzw. dos/win32konsole forum) suchen.
standard c++ ist der falsche ort.
-
thx, aber jetzt hab ich ein kleines problem:
#include <winsock2.h> #include <windows.h> WSADATA wsaData; if (WSAStartup(MAKEWORD(2,2), &wsaData)) { fehler = "WSAStartup() failed, %lu\n", (unsigned long)GetLastError(); fehlercode->Lines->Add(fehler); } else { fehlercode->Lines->Add("WSA gestartet"); } struct sockaddr_in { short int sin_family; /* AF_INET */ unsigned short int sin_port; /* Port-Nummer */ struct in_addr sin_addr; /* IP-Adresse */ }; struct sockaddr_in addr; int s; s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); if (s == -1) { fehler = "socket() failed"; fehlercode->Lines->Add(fehler); } else { fehlercode->Lines->Add("Socket erstellt"); } addr.sin_addr.s_addr = inet_addr("127.0.0.1"); addr.sin_port = htons(9900); addr.sin_family = AF_INET; if (connect(s, (sockaddr*) &addr, sizeof(addr)) == -1) { fehler = WSAGetLastError(); fehlercode->Lines->Add(fehler); } else { fehlercode->Lines->Add("Verbindung hergestellt"); }(Es wurde alles unnötige entfernt und nur das gepostet, das zum winsock gehört)
naja ich bekomm folgendes:
WSA gestartet
Socket erstellt
1001410014 == Bad address.
Ich finde den Fehler einfach net

Weble
-
fehlercode->Lines->Add("WSA gestartet"); // sieht nicht nach einem fehler aus // ... int s = socket(AF_INET, SOCK_STREAM, 0);
-
thx
der fehler lag vllt. auch an dem socket(AF_I.....
aber der hauptfehler war woll der:
if (connect(s, (sockaddr*) &addr, sizeof(addr)) == -1)so gehörts richtig:
if (connect(s, (sockaddr*) &addr, sizeof(sockaddr)) == -1)
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Weble schrieb:
fehler = "WSAStartup() failed, %lu\n", (unsigned long)GetLastError();Wat'n dat? An der Stelle solltest du dir auf jeden Fall mal die Funktionsweise des Komma-Operators erklären lassen (oder gleich umsteigen auf sprintf())