![]() |
Datei senden über TCP macht nur die halbe Arbeit
Ich habe mir das Bsp aus der
![]() Woran liegt's? |
Re: Datei senden über TCP macht nur die halbe Arbeit
Hi
:gruebel: Du solltest vielleicht mal deinen Code posten! Der Code aus der Code_Lib scheint jedenfalls in ordnung zu sein! Gruß Celina |
Re: Datei senden über TCP macht nur die halbe Arbeit
Hi,
ja poste mal ein bißchen Code oder schau Dir mal mein Bsp. an was ich zu dem Thema hier online gestellt habe : ![]() |
Re: Datei senden über TCP macht nur die halbe Arbeit
Hier erstmal der Code:
Delphi-Quellcode:
Ein Prob war am Anfang, dass unterschieden werden musste, ob eine einfache Nachricht reinkommt, oder eine Datei.
//Procedure zum Textnachrichten senden:
begin try TCPClient.Connect(5); TCPClient.WriteLn(BN+': '+MsgEdit.Text); WriteMsg(BN+': '+MsgEdit.Text); //Zum Chatnachrichten im eigenen Prog in ein RichEdit eintragen MsgEdit.Clear; finally TCPClient.Disconnect; end; end; //Procedure zum Dateien versenden: var FS: TFileStream; begin if not ODia.Execute then Exit; with TCPClient do begin FS := TFileStream.Create(ODia.FileName, fmOpenRead or fmShareDenyWrite); if MessageDlg('Folgende Datei möchten sie verschicken:'+#13#10#13#10+ 'Dateiname: "'+ODia.FileName+'"'+#13#10+ 'Größe: '+MakeSize(FS.Size)+#13#10#13#10+ 'Möchten sie sie an "'+TCPClient.Host+'" senden?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then Exit; Connect; try OpenWriteBuffer; try WriteLog('Übertrage Dateiinfos...'); WriteLn('#@#START|'+BN); Writeln(ODia.FileName); Writeln(MakeSize(FS.Size)); WriteLog('Dateitransfer beginnt...'); WriteStream(fs, true, true, 0); CloseWriteBuffer; WriteLog('Dateitransfer beendet'); except CancelWriteBuffer; raise; end; finally Disconnect; FS.Free; end; end; end; //Procedure zum Empfangen: var FS: TFileStream; SizeOfIncomingStream: integer; S, Fromuser, NameofFile, SizeofStream: String; begin SDia.FilterIndex := 1; SDia.DefaultExt := ''; with AThread.Connection do begin try S := Readln; if not (Pos('#@#START', S) = 1) then begin WriteMsg(S); end; if (Pos('#@#START', S) = 1) then begin WriteLog('Empfange Datei!'); //Träft auch in Richedit ein, aber in anderer Frabe, daher extra Procedure FromUser := CopyFT(S, Pos('|', S)+1, Length(S)); Write('Sender: '+Fromuser); NameofFile := Readln; WriteLog('Dateiname: '+NameofFile); SizeofStream := Readln; WriteLog('Größe: '+SizeofStream); if MessageBox(Application.Handle, PChar(FromUser+' schickt ihnen die Datei "'+NameofFile+'", die '+SizeofStream+' groß ist.'+#13#10+#13#10+'Wollen sie sie annehmen?'), 'Frage', MB_YESNO) = IDYes then begin SDia.FileName := ExtractFileName(NameofFile); if SDia.Execute then begin try Fs := TFileStream.Create(SDia.Filename, fmCreate or fmShareExclusive); SizeOfIncomingStream := ReadInteger; WriteLog('Datei wird runtergeladen...'); ReadStream(fs, SizeOfIncomingStream); WriteLog('Transfer erfolgreich abgeschlossen!'); WriteLog('Datei wurde unter "'+SDia.FileName+'" gespeichert!'); finally Fs.Free; end; end; end; end; finally Disconnect; end; end; end; |
Re: Datei senden über TCP macht nur die halbe Arbeit
hab jetzt keine zeit, den quelltext anzugucken, aber vieleicht liegt es daran, dass das nicht mit binär dateien funktioniert, obwohl doc mit Bilder ASCII ist
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz