Hallo,
nun ich will euch zunächst mal ein wenig C-Code zeigen.
// socket(), bind(), listen(), accept()
// Dann kommt folgender Code
char buf[512] = {0};
char* r = NULL;
FILE* fd = fdopen(socket, "r"); // socket stammt von accept()
printf("feof(): %d\n", feof(fd));
while(feof(fd) != EOF) {
r = fgets(buf, sizeof(buf), fd);
if(r != 0 && r != '\0') {
printf("%s", r);
} else {
break;
}
}
Also ich programmiere unter GNU/Linux, so vorweg mal.
Das ganze soll ein TCP/IP Server für die Schule werden.
Ausgabe:
feof(): 0 // Zitat aus man feof
"feof liefert ein Ergebnis ungleich 0, wenn die Dateiendekennung gesetzt ist."
// Was wiederum meine Erklärung für das Verhalten unten ist.
GET / HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.5) Gecko/20070718 Fedora/2.0.0.5-1.fc7 Firefox/2.0.0.5
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cache-Control: max-age=0
// Hier wartet der Server in der while-Schleife auf Nahrung in Byteform, weil er die Dateiendekennung die hier sein sollte nicht findet
Wie kann sowas sein und wie kann ich es (mein Problem) lösen?
Ich hoffe ich konnte mein Problem verständlich und prägnant erläutern.
Grüße,
M. J. J.