http request und replay
-
Was gehört zu einem HTTP request dazu damit der Server antworten kann?
Ich habe jetzt einen kleinen Client zusammengebastelt, aber mir antwortet nur mein eigener Server, sonst keiner ( kein wunder, denn ich weis ja was mein Server erwartet damit der mir antworten kann
)Im einzelnen löse ich erst mal den servernamen auf
struct hostent* h; h = gethostbyname( host.c_str( ) ); /* hier www.youtube.com */erstelle dann einen Streamsocket, binde den und connecte - alles klappt ( anscheind ).
Dann habe sende ich eine anfrage mit
int rc = 0; int gSend = 0; do { gSend = send ( fd, request, strlen( request ), 0 ); // request ist functionsparameter char* } while ( rc += gSend < strlen ( request ) || gSend < 0 );und warte mit select ( ... ) auf antwort welchen ich dann mit
rc = recv( fd, buffer, BUFFER_SIZE, 0 );empfange.
als request sende ich ( habe auch mit nur youtube, also ohne www probiert )
"GET / HTTP/1.1\nHost: www.youtube.com\nConnection: close\nAccept-Encoding: gzip\nAccept-Charset: IISO-8859-1,UTF-8;q=0.7,;q=0.7\nCache-Control: no\nAccept-Language: de,en;q=0.7,en-us;q=0.3\n"*
bekomme aber nichts zurück - fehlt da was?wie gesagt - wenn ich meinen eigenen Server anfrage, dann bekomme ich ein antwort, aber wieso klappt es bei anderen Servern nicht?
-
hi
eine leerzeile fehlt am schluss. in deinem fall muss das ende '\n\n' sein.
hier ein guter artikel aus unserem magazin ueber http
http://www.c-plusplus.net/forum/viewtopic-var-t-is-169861.htmlmeep meep
-
Außerdem sollten Absätze neben Linefeed auch Cariage Return bieten. Absätze würden so aussehen:
lalala\r\nlololo\r\nlelelele\r\n\r\n
-
Super Tutorial - hätte ich den früher gesehen, hätte ich bestimmt 6 Stunden gespart

Da fällt mir ein, ich hatte um 2 Stunden mit suchen nach einem C++ Socket als klasse oder Stream verbracht, aber nichts gefunden - obwohl ich swören könnte das ich mal was davon gehört habe - weiß einer wo es lebt?