ums präziser anzugeben.
ich kenn mich mit dem http protokoll nicht gut aus
wie soll ich einen stream zerlegen?
ich schick jetzt einmal 1 mb weg über den stream.
da http aber ein zustandsloses protokoll ist, würde ich ja bei jedem mb den stream unterbrechen.
wenn jetzt der client keine erneute anfrage schickt bekommt er ja den rest nicht.
mir ist also nicht ganz klar wie ich solche multipart messages verschicken soll.
wenn ich große files gleich in den stream schick und der client noch garnicht auf file akzeptieren geklickt hat würde mir der server abstürzen.
wenn ich langsam schicke weiß ich nicht wie langsam...
multipart messages funktionieren über ein boundary also der client könnte das schon wieder zusammensetzen - nur wie mach ich das verschicken richtig.
also wann muss ich die verbindung trennen und wann muß ich den stream fortsetzen??
hier noch meine kläglichen versuche mit dem mime types und den multipart messages klar zu kommen:
Delphi-Quellcode:
socket.SendText('
HTTP/1.1 200 OK' + #13#10);
socket.SendText('
Content-Type: multipart/digest; boundary="------------477C7EB42750E7F146A4CFA4"' + #13#10);
socket.SendText(#13#10);
socket.SendText('
------------477C7EB42750E7F146A4CFA4"' + #13#10);
clsocket.SendText('
Content-Type: video/octet-stream' + #13#10);
socket.SendText(#13#10);
// Stream Schicken....
AStream := TfileStream.Create(income, fmOpenRead
or fmShareDenyWrite );
try
buffer := AllocMem(AStream.Size);
AStream.
Read(buffer^,
Package);
with Socket
do
SendBuf(buffer^,
Package);
finally
FreeMem(buffer);
FreeAndNil(AStream);
end;
socket.SendText('
------------477C7EB42750E7F146A4CFA4"' + #13#10);
socket.SendText(#13#10);
end
thx
Arnulf