Entwickler-Ecke
Internet / Netzwerk - Datei versenden Sockets
Fighter#1 - Di 05.12.06 14:55
Titel: Datei versenden Sockets
Hallo, hab da mal ne Frage
Ich versende, wie in der Library beschrieben eine Datei (ein Bild 46 Kbyte) über die Sockets, nur wann weiß ich ob das Bild da ist, bzw. wann ich es öffnen kann?
Wenn ich einfach unter den OnRead Code das Bild öffne bekomm ich ne Fehlermeldung, dass die Datei noch benutzt wird
Narses - Di 05.12.06 14:59
Moin!
Fighter#1 hat folgendes geschrieben: |
| Ich versende, wie in der Library beschrieben eine Datei (ein Bild 46 Kbyte) über die Sockets, |
Gib mal einen exakten Link, WAS du mit "aus der Library" meinst, oder zeig mal deinen Code. ;)
Fighter#1 hat folgendes geschrieben: |
nur wann weiß ich ob das Bild da ist, bzw. wann ich es öffnen kann?
Wenn ich einfach unter den OnRead Code das Bild öffne bekomm ich ne Fehlermeldung, dass die Datei noch benutzt wird |
Das ist klar, es wird ja sicher nicht in einem Block empfangen.
cu
Narses
Fighter#1 - Di 05.12.06 15:06
Ok, wie immer gings ja rasend schnell :-D
Und nun mein COde
Klient (sender)
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.bildSocketConnect(Sender: TObject; Socket: TCustomWinSocket); var scr:TBitmap; FStream: TFileStream; begin scr:=TBitmap.Create; MakeScreenshot(scr); scr.SaveToFile(ExtractFilePath(paramstr(0))+'\scr.bmp'); BmpToJpg(ExtractFilePath(paramstr(0))+'\scr.bmp',1); FStream := TFileStream.Create(ExtractFilePath(paramstr(0))+'\scr.jpg', fmOpenRead); Socket.SendStream(FStream); bildSocket.Active:=False; DeleteFile(ExtractFilePath(paramstr(0))+'\scr.bmp'); end; |
Server (empfänger)
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| procedure TForm1.BildSocketClientRead(Sender: TObject; Socket: TCustomWinSocket); var FStream: TFileStream; SizeOfFile: Integer; pBuffer: Pointer; begin FStream := TFileStream.Create(ExtractFilePath(paramstr(0))+'\scr.jpg', fmOpenWrite); SizeOfFile := Socket.ReceiveLength; GetMem(pBuffer, SizeOfFile); try Socket.ReceiveBuf(pBuffer^, SizeOfFile); FStream.Write(pBuffer^, SizeOfFile); finally FreeMem(pBuffer); FStream.Free; end; end;
procedure TForm1.BildSocketClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin Image1.Picture.LoadFromFile(ExtractFilePath(paramstr(0))+'\scr.jpg'); end; |
Narses - Di 05.12.06 15:24
Moin!
Ja, dieser FAQ-Beitrag ist schon etwas älter und hat z.B. das Problem, nur bis 8kb großen Dateien zu funktionieren... (und ist abgesehen davon eh nicht wirklich sauber gelöst).
Ich habe mal bei den Mods vorgeschlagen, den Beitrag wieder zum Editieren freizugeben, dann kann man das da mal vermerken.
cu
Narses
Fighter#1 - Di 05.12.06 19:31
... drum hats nie geklappt, und es sind nur exakt 8kb angekommen, danke
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!