Dateiübertragung in Stücken via' Sockets, wie?
-
Hallo Community,
meine Aufgabe ist es einen Http-Webserver zu programmieren, damit bin ich eigentlich auch so gut wie fertig. Doch eine Sache muss ich noch implementieren, die Übertragung einer Datei.
Bislang macht mein Server das so:
1.) Suche angeforderte Datei
2.) Alloziere n Bytes an Speicher
3.) Kopiere den Inhalt der Datei in den Speicher
4.) Übertrage die kompletten n Bytes auf einmalIch bin mir bewusst, dass dies keine gute Strategie ist, erstens wird dies ziemlich in die Hose gehen bei sehr großen Dateien und zweitens ist es keine faire Strategie, wenn es mehrere Clients gibt, die eine Anfrage haben.
Darum möchte bzw. unser Übungsleiter möchte es auch so, die Datei in Stücken übertragen. Nur wie mache ich das jetzt?
Mein Server-Programm handelt alle eintretenden Events mit Polling "poll( ... )", wie mache ich das jetzt am besten?
Wenn ein Client an meinen Server eine Anfrage schickt, dann wird in der POLLIN alles in die Wege geleitet (Anfrage geparst, nach der Datei gesucht). Wenn ich nun das Filehandle f habe, kann ich dies einfach in die write Funktion stecken, mit der ich ja auf den Socket schreie?
Also ich habe nicht wirklich eine Idee wie ich das angehen soll und hoffe ihr könnt mir an dieser Stelle weiter helfen.
Lg Tobi
-
-
Danke schön,
werde ich mal ausprobieren
Lg Tobi