Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];

Вниз

Мастера!!! как програмным путём передать файл.* по сети...   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.045 c
2-1142632914
jenya_rus
2006-03-18 01:01
2006.04.02
Преобразование в hex???


2-1142655934
koyama
2006-03-18 07:25
2006.04.02
Шифрование


11-1123749677
Dodfr
2005-08-11 12:41
2006.04.02
Amazing bug ?


6-1134981691
SergP.
2005-12-19 11:41
2006.04.02
Шифруются ли данные передаваемые на сервер по HTTPS в GET-запросе


2-1142436458
ctudent
2006-03-15 18:27
2006.04.02
Помогите разобраться!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский