Tach nochmal.
Also wie mein title schon sagt.
sry wenn ich's kurz mache:
Alles anzeigen
Das Programm schmeisst mir den korrekten request
nochmal in einer MessageBox, dann war's das.
Das Programm läuft noch stundenlang wie ich im
Taskmanager sehen kann, aber eien Antwort vom
Server wird nie in einer MessageBox ausgegeben...
Ganz egal welchen Host, google.de, funpic.de etc.
Was zur Hölle ist da falsch?
Also wie mein title schon sagt.
sry wenn ich's kurz mache:
Quellcode
- #include <windows.h>
- #include <string>
- #include <stdio.h>
- using namespace std;
- /* Prototypen */
- long getAddrFromString (char* hostnameOrIp, SOCKADDR_IN* addr);
- /* Einstiegsfunktion */
- int WINAPI WinMain (HINSTANCE hThisInstance,
- HINSTANCE hPrevinstance,
- LPSTR lpCmdLine,
- int iCommands) {
- /* WinSock starten. Wenn fehlschlägt, kannste alles vergessen */
- WSADATA wsa;
- long rc = WSAStartup (MAKEWORD(2, 0), &wsa);
- if (rc == 0) {
- /* Host und Clientheader-Variablen. */
- char host[] = "meinhost.de";
- string client = "";
- client += "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n";
- client += "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n";
- client += "Accept -Encoding: gzip , deflate\r\n";
- client += "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n";
- client += "Connection: keep -alive\r\n";
- client += "Keep-Alive: 300\r\n";
- /* Buffer bereitstellen */
- string req;
- string stl;
- char antwort[1000];
- /* Kann Keiner erstellt werden, ist ebenfalls Schluss */
- int s = socket(AF_INET, SOCK_STREAM, 0);
- if (s != INVALID_SOCKET) {
- /* Socket zum Host verbinden. */
- sockaddr_in addr;
- addr.sin_family = AF_INET;
- addr.sin_port = htons(80);
- /* Alles abbrechen, wenn Host-IP nicht aufgelöst werden konnte. */
- rc = getAddrFromString(host, &addr);
- if (rc != SOCKET_ERROR) {
- /* Alles abbrechen, wenn nicht zum Host verbinden konnte. */
- rc = connect(s, (SOCKADDR*)&addr, sizeof(SOCKADDR));
- if (rc != -1) {
- /* An Host senden und per MessageBox bestätigen! */
- req = "GET /tell.php?test=hi HTTP/1.1\r\n";
- req += "Host: "; req += host; req += "\r\n";
- req += client;
- req += "\r\n";
- MessageBox (0, req.c_str(), "anfrage", MB_ICONINFORMATION);
- /* Antwort lesen und per MessageBox bestätigen. */
- rc = recv(s, antwort, 1000, 0);
- if (rc != 0) {
- MessageBox (0, antwort, "antwort", MB_ICONINFORMATION);
- }
- }
- }
- }
- }
- return 0;
- }
- // --- Zum Verbinden zum Host per Hostname.
- long getAddrFromString (char* hostnameOrIp, SOCKADDR_IN* addr) {
- long rc;
- unsigned long ip;
- HOSTENT* he;
- /* Parameter prüfen */
- if (hostnameOrIp==NULL || addr==NULL)
- return SOCKET_ERROR;
- /* eine IP in hostnameOrIp ? */
- ip = inet_addr(hostnameOrIp);
- /* bei einem fehler liefert inet_addr den Rückgabewert INADDR_NONE */
- if(ip != INADDR_NONE) {
- addr->sin_addr.s_addr=ip;
- return 0;
- } else {
- /* Hostname in hostnameOrIp auflösen */
- he = gethostbyname(hostnameOrIp);
- if (he == NULL) {
- return SOCKET_ERROR;
- } else {
- /*die 4 Bytes der IP von he nach addr kopieren */
- memcpy(&(addr->sin_addr),he->h_addr_list[0],4);
- }
- return 0;
- }
- }
Das Programm schmeisst mir den korrekten request
nochmal in einer MessageBox, dann war's das.
Das Programm läuft noch stundenlang wie ich im
Taskmanager sehen kann, aber eien Antwort vom
Server wird nie in einer MessageBox ausgegeben...
Ganz egal welchen Host, google.de, funpic.de etc.
Was zur Hölle ist da falsch?