Дорогие программисты, помогите разобраться.. Немного туплю, только учусь кодить, всё по примерам так сказать, не бейте тапками.
Нужна помощь, обмениваться файлами между клиентом и сервером и наоборот.
Как отсылать файл с сервера на клиент я разобрался.
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | отправляю (сервер)
Код:
begin
MS := TMemoryStream . Create;
MS . LoadFromFile( '.\Config\'+Datetostr(Date)+' \zav . txt');
ServerSocket1 . Socket . Connections[ 0 ].SendText( 'file#' + '.\Config\'+Datetostr(Date)+' \zav . txt '+' # '+IntToStr(MS.Size)+' #');
MS . Position := 0 ;
P := MS . Memory;
Size := ServerSocket1 . Socket . Connections[ 0 ].SendBuf(P^, MS . Size);
ProgressBar1 . Position := Size* 100 div MS . Size;
StatusBar1 . SimpleText := 'Отправлено ' +IntToStr(Size)+ ' из ' +IntToStr(MS . Size)+ ' байт' ;
end ;
|
Получаю (клиент)
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | var
Rtext: string ;
begin
Rtext := Socket . ReceiveText;
if Receive then
Writing(RText)
else
begin
if Copy(Rtext, 0 , Pos( '#' , Rtext) - 1 ) = 'file' then
begin
MS := TMemoryStream . Create;
Delete(Rtext, 1 , Pos( '#' , Rtext));
Name := Copy(Rtext, 0 , Pos( '#' , Rtext) - 1 );
Delete(Rtext, 1 , Pos( '#' , Rtext));
Size := StrToInt(Copy(Rtext, 0 , Pos( '#' , Rtext) - 1 ));
Delete(Rtext, 1 , Pos( '#' , Rtext));
Label56 . Caption := 'Размер файла: ' +IntToStr(Size)+ ' байт' ;
Label57 . Caption := 'Имя файла: ' +Name;
Receive := true ;
Writing(RText);
end ;
end ;
end ;
|
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | procedure TForm1 . Writing(Text: AnsiString );
begin
if MS . Size < Size then
MS . Write (Text[ 1 ], Length(Text));
ProgressBar1 . Position := MS . Size* 100 div Size;
StatusBar1 . SimpleText := 'Принято ' +IntToStr(MS . Size)+ ' из ' +IntToStr(Size);
if MS . Size = Size then
begin
Receive := false ;
MS . Position := 0 ;
MS . SaveToFile(Name);
ClientSocket1 . Socket . SendText( 'end' );
MS . Free;
StatusBar1 . SimpleText := 'Файл принят' ;
end ;
|
А как обратную связь сделать... Пытался посылать, и вроде как мне статус бар сигнализирует, что файл отправлен, однако он не сохраняется сервером (делал обратный код)