Wenn ich mein Code ausführen lasse , dann kommt zwar kein Fehler oder ähnliches , aber ich bekomme auch keine Antwort vom Server .
Code:
Code:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
const int BUFFER_SIZE = 65535;
u_long dns(const char *host){
struct hostent *hp;
u_long host_ip;
host_ip = inet_addr(host);
if(host_ip == INADDR_NONE){
hp = gethostbyname(host);
if(!hp){
return 0;
}else{
host_ip = *(u_long *)hp->h_addr;
}
}
return host_ip;
}
char * HTTPRequest(const char* server, int port, char * request)
{
WSADATA w;
int res = WSAStartup(MAKEWORD(2,0), &w);
#ifdef DEBUG
if(res != 0)
{
printf("Winsock 2 konnte nicht gestartet werden!\n");
}
else
{
printf("Winsock 2 gestartet!\n");
}
#endif
int Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
#ifdef DEBUG
if(Socket == -1)
{
printf("Socket konnte nicht erstellt werden!\n");
}
else
{
printf("Socket wurde erstellt!\n");
}
#endif
u_long ip = dns(server);
SOCKADDR_IN service;
service.sin_family = AF_INET;
service.sin_port = htons(port);
service.sin_addr.s_addr = ip;
res = connect(Socket, (SOCKADDR *)(&service), sizeof(service));
#ifdef DEBUG
if(res == -1)
{
printf("Verbindung fehlgeschlagen!\n");
}
else
{
printf("Verbindung erfolgreich!\n");
}
#endif
res = send(Socket, request, strlen(request), 0);
char *buffer = (char *) malloc(BUFFER_SIZE);
res = recv(Socket, buffer, sizeof(buffer) - 1, 0);
buffer[res] = '\0';
WSACleanup();
return buffer;
}
int main()
{
char request[] =
"GET /search?hl=de&q=http+request&btnG=Google-Suche&meta= HTTP/1.1\r\n"
"User-Agent: dein Browser\r\n"
"Host: www.google.de\r\n"
"Accept: */*\r\n"
"Accept-Encoding: text/html\r\n\r\n";
char * temp = HTTPRequest("www.google.de", 80, request);
puts(temp);
free(temp);
system("PAUSE");
}
Meiner Meinung nach ist alles richtig , aber irgendetwas muss falsch sein .
Am packet liegt es nicht , denn ich habe es auch schon mit etlichen anderen Packets/Seiten probiert ...
Btw. der Code ist für wxDevC++