Текущий архив: 2006.04.02;
Скачать: CL | DM;
ВнизМастера!!! как програмным путём передать файл.* по сети... Найти похожие ветки
← →
KvORubin © (2005-12-17 18:02) [0]Мастера!!! как програмным путём передать файл.* по сети...
Допустим имеется программа сервер и клиент, модэмное соединение производится по городской линии.
связь меж программами IdTCPServer1 и IdTCPClient1
Задача: передать файл с сервера к клиенту..
Подскажите конкретно какой компонент может этим заняться.. или это программно??? как???
← →
KvORubin © (2005-12-17 19:47) [1]Удалено модератором
Примечание: Создание пустых сообщений
← →
Sysanin (2005-12-17 21:55) [2]эээээ, тебя интересует имено передача файла между компонентами IdTCPServer1 и IdTCPClient1? Или ещё как можно заставить модем подключиться к другому, а потом переслать файл? С первым пунктом мона попробовать так: Читаешь строку из файла например клиентом, потом её передаешь серверу; сервер получил строку и добавил её во временый файл. И так повторяешь пока клиент не прочитает весь файл. А с временым файлом на серве уже делаешь то что надо (копируешь куда надо, переименовываешь и т. д.). Не гарантирую что это способ самый рациональный, надёжный и быстрый, но не слишком тяжёл в осуществлении. Кажись делфи может пересылать файловые потоки (что в даном случае пожалуй рациональней), но я с ними не разбирался по этому помочь не могу. :(
← →
kvorubin © (2005-12-20 06:32) [3]Спасибо, только как можно прочитать построчно файл, если он не загружается допустим в мемо1, или же есть какая-то переменная, в которую можно забросить содержимое файла???
И как с этой переменной выдернуть именно строку и кинуть в другую переменную для отправки???
← →
Жлопопупсик (2005-12-20 09:58) [4]unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, StdCtrls;
type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
ServerSocket1: TServerSocket;
btnTestSockets: TButton;
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure btnTestSocketsClick(Sender: TObject);
private
FStream: TFileStream;
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
iLen: Integer;
Bfr: Pointer;
begin
iLen := Socket.ReceiveLength;
GetMem(Bfr, iLen);
try
Socket.ReceiveBuf(Bfr^, iLen);
FStream.Write(Bfr^, iLen);
finally
FreeMem(Bfr);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FStream := nil;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if Assigned(FStream) then
begin
FStream.Free;
FStream := nil;
end;
end;
procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
if Assigned(FStream) then
begin
FStream.Free;
FStream := nil;
end;
end;
procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
FStream := TFileStream.Create("c:\temp\test.stream.html", fmCreate or fmShareDenyWrite);
end;
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Socket.SendStream(TFileStream.Create("c:\temp\test.html", fmOpenRead or fmShareDenyWrite));
end;
procedure TForm1.btnTestSocketsClick(Sender: TObject);
begin
ServerSocket1.Active := True;
ClientSocket1.Active := True;
end;
end.
← →
Бомбермен (2005-12-20 09:59) [5]Здесь мы рассмотрим посылку файлов через сокет. Итак, как же послать файл по сокету? Очень просто! Достаточно лишь открыть этот файл как файловый поток (TFileStream) и отправить его через сокет (SendStream)! Рассмотрим это на примере:
{Посылка файла через сокет}
procedure SendFileBySocket(filename: string);
var
srcfile: TFileStream;
begin
{Открываем файл filename}
srcfile := TFileStream.Create(filename,fmOpenRead);
{Посылаем его первому подключенному клиенту}
ServerSocket1.Socket.Connections[0].SendStream(srcfile);
{Закрываем файл}
srcfile.Free;
end;
Нужно заметить, что метод SendStream используется не только сервером, но и клиентом (ClientSocket1.Socket.SendStream(srcfile))
← →
KvORubin © (2005-12-20 10:00) [6]Спасибо, попробую.
Страницы: 1 вся ветка
Текущий архив: 2006.04.02;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.039 c