AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Client / Server Dateien senden und empfangen.
Thema durchsuchen
Ansicht
Themen-Optionen

Client / Server Dateien senden und empfangen.

Ein Thema von codenoob · begonnen am 25. Mär 2015 · letzter Beitrag vom 2. Apr 2015
 
codenoob
(Gast)

n/a Beiträge
 
#1

Client / Server Dateien senden und empfangen.

  Alt 25. Mär 2015, 23:58
Hi,

Ich hab mal eine Frage.

Ich befasse mich seit kurzem mit den Socket Komponenten und dem senden und empfangen von Dateien.

Ich hab mich mit den TClientSocket / TServerSocket und den Indy TidTCPClient / TidTCPServer Komponenten bisschen befasst.
Die Dateien hab ich immer in ein TFileStream geladen und dann mit SendStram versendet.

Was mir dabei aufgefallen ist war das ich mit....

TClientSocket / TServerSocket nur Dateien mit max. 700MB und mit den Indy TidTCPClient / DidTCPServer bis max. 2GB Grösse versenden konnte.
Gibt es da bei den Komponenten ein Limit was die Grösse des Versendens angeht, oder hat das mit dem FileStream zu tun?


Ich habe da schon Codes gefunden der das ganze blockweise macht leider funktioniert das mit Delphi XE2 leider nicht ka. warum.

Delphi-Quellcode:
procedure SendFile(lpFileName: string; Socket1: TClientSocket);
var
  F: file;
  FileInfo: TFileInfo;
  dwFileSize, dwBytesRead: DWORD;
  Buffer: array[0..4096] of Char;
begin
  {$I-}
  AssignFile(F, lpFileName);
  Reset(F, 1);
  dwFileSize := FileSize(F);
  FileInfo.FileName := lpFileName;
  FileInfo.FileSize := dwFileSize;
  Socket1.SendBuffer(FileInfo, SizeOf(FileInfo));
  repeat
    FillChar(Buffer, SizeOf(Buffer), 0);
    BlockRead(F, Buffer, SizeOf(Buffer), dwBytesRead);
    Socket1.SendBuffer(Buffer, dwBytesRead);
  until (dwBytesRead = 0);
  CloseFile(F);
  {$I+}
end;

procedure ReceiveFile(Socket1: TClientSocket);
var
  F: file;
  lpFileName: string;
  FileInfo: TFileInfo;
  dwFileSize, dwBytesRead: DWORD;
  Buffer: array[0..4096] of Char;
begin
  Socket1.ReceiveBuffer(FileInfo, SizeOf(TFileInfo));
  lpFileName := FileInfo.FileName;
  dwFileSize := FileInfo.FileSize;
  {$I-}
  AssignFile(F, lpFileName);
  ReWrite(F, 1);
  repeat
    FillChar(Buffer, SizeOf(Buffer), 0);
    dwBytesRead := Socket1.ReceiveBuffer(Buffer, SizeOf(Buffer));
    BlockWrite(F, Buffer, dwBytesRead);
    Dec(dwFileSize, dwBytesRead);
  until (dwFileSize <= 0);
  CloseFile(F);
  {$I+}
end;
Kann mir da jemand bisschen unter die Arme greifen der sich damit auskennt und mir den richtigen Weg weisen? Bin absoluter Neuling....

Danke schon im Voraus und Lg. CodeNoob
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:19 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 by Thomas Breitkreuz