Einzelnen Beitrag anzeigen

Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#2

Re: Server für video stream clients ( pinnacle showcenter et

  Alt 5. Feb 2007, 14:25
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
  Mit Zitat antworten Zitat