Send fil client/serversocket

Tags:    delphi

Nogen der kender en simpel måde at sende en fil med server/clientSocket komponentet? Jeg har prøvet den på SwissDelphiCenter.ch. Jeg prøvede at sende en BMPfil, men det modtagede billede blev helt fucket op :). Hvis i kommer med noget kode vil jeg gerne ha lidt forklaring for er ikke så stiv i filestream stuff.



4 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 7 karma
Sorter efter stemmer Sorter efter dato
Nogen der kender en simpel måde at sende en fil med server/clientSocket komponentet? Jeg har prøvet den på SwissDelphiCenter.ch. Jeg prøvede at sende en BMPfil, men det modtagede billede blev helt fucket op :). Hvis i kommer med noget kode vil jeg gerne ha lidt forklaring for er ikke så stiv i filestream stuff.


I Serveren skal du skrive:
<pre>ServerSocket.SendStream (TFileStream.Create ('C:\\BmpFil.bmp', fmOpenRead or fmShareDenyWrite));</pre>Det sender C:\\BmpFil.bmp som et TFileStream.

I Klientens private sektion skal du tilføje:
<pre>Buffer: array [0..9999] of Char;</pre>
Og i ClientSocket onRead:
<pre>procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
strIn: string;
Stream: TMemoryStream;
nReceived: Integer;
begin
Stream := TMemoryStream.Create; // Forbered Streamet
Screen.Cursor := crHourglass; // Det kan godt tage lidt tid så gør musen til et timeglas
try
while True do // En lykke der altid er sand
begin
nReceived := Socket.ReceiveBuf (Buffer, sizeof (Buffer)); // Modtag en del til "Buffer"
if nReceived <= 0 then // nReceived er 0 hvis der ikke er modtaget noget
Break // i så fald skal vi afbryde lykken
else
Stream.Write (Buffer, nReceived); // ellers skal vores Stream udvides det der modtaget
Sleep (200); // forsink 200 millisekunder
end;
Stream.Position := 0; // Læs fra Streamets start
Image1.Picture.Bitmap.LoadFromStream (Stream); // Indlæs det til Image1 (denne linie skal kun
finally // med hvis det er et billede der bliver sendt)
Stream.Free; // Fjern billedet fra hukommelsen
Screen.Cursor := crDefault; // Sæt musen tilbage
end;
end;</pre>
Du kan gøre det samme med en hvilken som helst anden fil, der skal du bare ikke sætte det ind i et image.

Emil Melgaard
emil.melgaard@private.dk
- Admin på gruppen Delphi spilprogrammering.
http://www.delphispilprogram.udvikleren.dk



Nogen der kender en simpel måde at sende en fil med server/clientSocket komponentet? Jeg har prøvet den på SwissDelphiCenter.ch. Jeg prøvede at sende en BMPfil, men det modtagede billede blev helt fucket op :). Hvis i kommer med noget kode vil jeg gerne ha lidt forklaring for er ikke så stiv i filestream stuff.



prøv at læse den her artikel

http://www.udvikleren.dk/article.php?aid=43&techid=2




prøv at læse den her artikel

http://www.udvikleren.dk/article.php?aid=43&techid=2


Nu er det sådan at TNNStreamServer er noget andet end TServerSocket

MH.

The-Freak

Livet er for kort til at kede sig.




prøv at læse den her artikel

http://www.udvikleren.dk/article.php?aid=43&techid=2

Nu er det sådan at TNNStreamServer er noget andet end TServerSocket

MH.

The-Freak

Livet er for kort til at kede sig.


Nej det er ikke sikkert men det der kunne måske bruges



t