PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem beim verbinden zum lokalen Webserver


evidence
04.06.2002, 19:38
Hi!
Ich hab mir vor kurzem das RFC 2068 (HTTP/1.1) ein bissl durchgelesen. Hab mir einen Webserver runtergeladen und mich gleich mit telnet verbunden. Über Telnet hat das ganze ganz gut geklappt!
telnet localhost 80
GET / HTTP/1.1" 304 - "" "Testoperation"
Host: localhost
Da bekam ich schon was vom Webserver. Und angezeigt wurde auch das ein Verbindungsversuch erfolgte.
Jetzt hab ich versucht das ganze in ein C Programm umzusetzen:





#include <windows.h>
#include <stdio.h>
#include <conio.h>
int startWinsock(void);
int main()
{
char sen[100];
long rc;
SOCKET s;
SOCKADDR_IN addr;
rc=startWinsock();
s=socket(AF_INET,SOCK_STREAM,0);
memset(&addr,0,sizeof(SOCKADDR_IN));
addr.sin_family=AF_INET;
addr.sin_port=htons(80);
addr.sin_addr.s_addr=inet_addr("127.0.0.1");
rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));
if(rc!=SOCKET_ERROR)
{
strcpy(sen,"GET / HTTP/1.1\" 304 - \"\" \"Testoperation\"\nHost: localhost\n");
printf("%s",sen);
rc=send(s,sen,100,0);
printf("gesendet!");

}
}

int startWinsock(void)
{
WSADATA wsa;
return WSAStartup(MAKEWORD(2,0),&wsa);
}


Er schreibt zwar "gesendet!" aber es wird kein Verbindungsversuch angezeigt! Warum funktioniert das nicht? Hab mir drüber schon den ganzen Tag den Kopf zerbrochen! Kann es sein das ich kein CR senden kann?? Warum geht das mit \n nicht?

Danke schon im vorraus!


Mfg Evidence


Felix Kaiser
05.06.2002, 00:13
Ob nur der LineFeed reicht (\n) weiß ich nicht, ich sende lieber so wie es sein soll einen CRLF (\r\n) und damit klappts. Hast du mal die WinSock Fehlercodes ausgewertet?

evidence
05.06.2002, 06:05
Also es kommt kein Fehlercode!
Das Programm sendet doch der Webserver reagiert nicht!!

Das mit dem CRLF hab ich auch schon probiert bringt auch nichts!!

Mfg evi

Felix Kaiser
05.06.2002, 12:20
"GET /pfad/index.html HTTP/1.1\r\n"
"Connection: Keep-Alive\r\n"
"User-Agent: DeinClient\r\n"
"Host: www.ziel-host.de:80\r\n"
"Accept: */*\r\n\r\n"

Irgendwie hast du auch keinen konformen HTTP/1.1 Request da, probiers mal nach diesem Schema...