Mit WSA auf google.de zugreifen
-
ich liebe dich @spicker@

es geht endlich
aber warum hat das ganze bei nem freund vonmir funktioniert
mfg
@night@
-
heyho,
bis jetzt funktioniert zwar nicht alles so wie es soll,aber das ist erstmal egal.
Mein größtes Problem wär folgendes:
Wenn ich ein 2. Mal versuche eine Verbindung herzustellen, gibt mir die Funktion connect() nur SOCKET_ERROR zurück, obwohl ich fünf Sekunden davor die Verbindung per closesocket abgebrochen habe.
Gibt es hier eine Art spoiler, damit nicht immer der gesamte Platz auf der Seite eingenommen wird???#include <iostream> #include <windows.h> #include <winsock2.h> #include <string> #include <fstream> #include <sstream> using namespace std; string StringBetween(const string& input, const string& left, const string& right) { size_t posLeft, posRight; posLeft = input.find(left); posRight = input.find(right); if (posLeft == string::npos || posRight == string::npos) { return ""; // Nicht gefunden } posLeft += left.length(); posRight += right.length(); string ergebnis1 = input.substr(posLeft, input.length() - right.length() - left.length()); int formel = (input.find(right) - posLeft); string ergebnis2 = ergebnis1.substr(0, formel); return ergebnis2; } int WSAStart() { WSADATA wsa; return WSAStartup(MAKEWORD(2,0), &wsa); } int cstringlen(char array[]) { int counter=0; while (array[counter]!=0) { counter++; } return counter; } void gebaus(char array[]) { for (int i=0;array[i]!=0;i++) { cout << array[i]; } cout << endl; } string getDataforfirst() { int MAX_LENGTH = 8000; char crlf = 13; char buffer[MAX_LENGTH]; string data; data = "GET / HTTP/1.0\r\n" "Host: www.google.de\n" "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16 (.NET CLR 3.5.30729)\r\n" "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n" "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n" "Keep-Alive: 300\r\n" "Connection: keep-alive\r\n\r\n"; return data; } void WSArecv(SOCKET s, char buffer[]) { int rc; for(;;) { rc = recv(s, buffer, sizeof(buffer), 0); if(rc == -1) { cout << "Fehler: " << WSAGetLastError() << '\n'; break; } if(rc == 0) { break; } } // ende for-schleife } int firstcall() { SOCKET s; if (WSAStart()!=0) { cout << "WSA konnte nicht gestartet werden!" << endl; system("pause"); return -1; } s = socket(AF_INET, SOCK_STREAM, 0); if (s==INVALID_SOCKET) { cout << "Socket konnte nicht ertellt werden!" << endl; system("pause"); return -1; } sockaddr_in addr; memset(&addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten addr.sin_family = AF_INET; addr.sin_port = htons(80); addr.sin_addr.s_addr = inet_addr("74.125.77.104"); long rc = connect(s, (SOCKADDR*)&addr, sizeof(sockaddr)); if (rc==SOCKET_ERROR) { cout << "Verbindung konnte nicht hergestllet werden!" << endl; system("pause"); return -1; } else { cout << "Verbindung wurde erfolgreich hergestllt!" << endl; } string data = getDataforfirst(); char buffer[10000]; strcpy(buffer, data.c_str()); rc = send(s, data.c_str(),data.length(), 0); //senden if (rc==SOCKET_ERROR) { cout << "Fehler beim Senden der Daten!" << endl; system("pause"); return -1; } else { cout << "Daten wurden erfolgreich gesendet!" << endl; } char buffer2[5000]; //==================================>Empfangen... /* ofstream f("C:/test.html"); for(;;) { gebaus(buffer2); rc = recv(s, buffer2, sizeof(buffer2), 0); if(rc == -1) { cout << "Fehler: " << WSAGetLastError() << '\n'; break; } if(rc == 0) { break; } f.write(buffer2, rc); } */ string source; do { gebaus(buffer2); rc = recv(s, buffer2, sizeof(buffer2), 0); if(rc == -1) { cout << "Fehler: " << WSAGetLastError() << '\n'; break; } if(rc == 0) { break; } source.assign(buffer2); } while (!source.find("</script>")); do { rc = recv(s, buffer2, sizeof(buffer2), 0); } while (!rc||rc==-1); closesocket(s); string img = StringBetween(source, "<img>", "</img>"); cout << "imagename=" << img << endl; //==================================================================>>>> ssid erfolgreich abgezogen data = "GET / HTTP/1.0\r\n" "Host: www.google.de\n" "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16 (.NET CLR 3.5.30729)\r\n" "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n" "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n" "Keep-Alive: 300\r\n" "Connection: keep-alive\r\n\r\n"; Sleep(5000); rc = connect(s, (SOCKADDR*)&addr, sizeof(sockaddr)); if (rc==SOCKET_ERROR) { cout << "Fehler beim 2.Verbinden" << endl; system("pause"); return -1; } rc = send(s, data.c_str(), data.length(), 0); if (rc==SOCKET_ERROR) { cout << "Fehler beim Einloggen mir SSID" << endl; system("pause"); return -1; } else { cout << "Daten wurden zum 2.Mal erfolgreich gesendet!" << endl; } char buffer3[8000]; ofstream f("C:/test.html"); for(;;) { gebaus(buffer3); rc = recv(s, buffer3, sizeof(buffer3), 0); if(rc == -1) { cout << "Fehler: " << WSAGetLastError() << '\n'; break; } if(rc == 0) { break; } f.write(buffer3, rc); } } int main(int argc, char *argv[]) { firstcall(); system("pause"); }mfg
@night@
-
char buffer2[5000]; ... delete &buffer2;

-
@eeker
jaja. ahb keine ahnung wie ich auf den Mist gekommen bin
mein plan war erstmal das Programm zum laufen zu bringen und anschliessend das programm nochmal sauber zu schreiben und alles aufzuräumen...
mfg
@night@