[WINSOCK] Recht simples Problem
-
Hi
Folgender Code funzt nicht und er empfängt nie eine Antwort (Zur Info: Ich habe einen astrein funktionierenden lokalen Webserver):
#include <stdio.h> #include "winsock.h" #define DEBUG int main() { const char ip[] = "127.0.0.1"; const unsigned int port = 80; const char sendbuf[] = "GET / HTTP/1.1"; char recvbuf[64] = ""; // Initialisierung von Winsock WSADATA wsadata; if(WSAStartup(MAKEWORD(1,1), &wsadata) == NO_ERROR) { #ifdef DEBUG printf("Winsock initialisiert.\n"); #endif // Erstellen eines Sockets SOCKET sock; sock = socket(PF_INET, SOCK_STREAM, 0); if(sock != INVALID_SOCKET) { #ifdef DEBUG printf("Socket erfolgreich erstellt.\n"); #endif sockaddr_in server; if((server.sin_addr.S_un.S_addr = inet_addr(ip)) != INADDR_NONE) { #ifdef DEBUG printf("IP-Adresse gueltig.\n"); #endif server.sin_family = PF_INET; server.sin_port = htons(port); // Connectvorgang zum Socket if(connect(sock, (SOCKADDR*)&server, sizeof(server)) != SOCKET_ERROR) { #ifdef DEBUG printf("Connection zum Socket hergestellt.\n"); #endif int sentbytes; // Senden des Befehls sentbytes = send(sock, sendbuf, sizeof(sendbuf), 0); if(sentbytes > 0) { #ifdef DEBUG printf("Befehl gesendet.\n"); #endif int recvbytes = 1; char recvbuf[64]; // Empfangen der Antwort do { recvbytes = recv(sock, recvbuf, sizeof(recvbuf), 0); } while(recvbytes > 0); #ifdef DEBUG printf("Antwort erhalten.\n"); #endif #ifdef DEBUG printf("\nResultat des Ablaufs:\n"); printf("IP-Adresse: %i \n", ip); printf("Gesendete Bytes: %i \n", sentbytes); printf("Empfangene Bytes: %i \n", recvbytes); printf("Gesendete Nachricht: %s \n", sendbuf); printf("Erhaltene Antwort: %s \n", recvbuf); #endif } } } } closesocket(sock); WSACleanup(); } #ifdef DEBUG printf("\nProgrammende.\n\n"); #endif return(0); }
Das Programm bleibt nach der Ausgabe von "Befehl gesendet." stehen und macht nicht weiter. Warum geht das so nicht?
Danke für eure Hilfe!
MfG
-
Hi,
da muss noch ein \n\n dahinter, sonst wartet der Webserver auf weitere Daten...
also "GET / HTTP/1.1\n\n"
-
Wow, echt vielen vielen Dank :).
Wieso muss es immer an solchen Kleinigkeiten liegen.