Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.16;
Скачать: CL | DM;

Вниз

Как отправить файл по сети?   Найти похожие ветки 

 
13-th Warrior   (2004-03-20 19:28) [0]

Может здесь кто нибуть поможет? Плиззз!
Как отправить файл по сети?


 
Rezya ©   (2004-03-21 17:11) [1]

Смотря каким образом ты хочешь это сделать.
ClientSocket or ServerSocket или WinApi Socket или какм либо другим способом?


 
13-th Warrior   (2004-03-21 18:32) [2]

Любым, лишь бы полегче


 
Yermek   (2004-03-23 23:00) [3]

Держи, ссылку не нашел так что...
99,9% работает

серверная часть

procedure SentFile;
var
 P: ^Byte;
 MS:TMemoryStrim
 j:Integer;
 ac:Integer;
begin
 // Создаём буфер клиента для файла
 MS := TMemoryStream.Create;
 // Загружаем файл в буфер
 MS.LoadFromFile("путь+имя файла");
 ServerSocket1.Socket.Connections[j].SendText("file#" + name + "#"+IntToStr(MS.Size)+"#");
 // Переводим каретку в начало файла
 MS.Position := 0;
 // Загружаем в переменную "P" файл
 P := MS.Memory;
 // Посылаем файл клиету
 ServerSocket1.Socket.Connections[0].SendBuf(P^, MS.Size);
 // записываем в журнал
end;


клиентская часть
 ...
 private
   Name: string; // Имя файла
   Size: integer; // Размер файла
   Receive: boolean; // Режим клиента
   MS: TMemoryStream; // Буфер для файла

{ процедура сохраняет принятые данные из сети в файл }
procedure Writing(Text: string);
begin
 // Если принято байт меньше размера файла, то записываем в буфер
 if MS.Size < Size then MS.Write(Text[1], Length(Text));
 // Выводим прогресс закачки файла
 Gauge1.Progress :=MS.Size;// 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"); // Посылаем команду "end", то есть файл принят
   MS.Free; // Убиваем буфер
   //StatusBar1.SimpleText := "Файл принят";
   Panel3.Visible:=false;
 end;
end;

procedure TfmSelectTest.ClientSocket1Read(Sender: TObject;
 Socket: TCustomWinSocket);
var
 sr_text: string; // Принятый текст
begin
 sr_text := Socket.ReceiveText;
 // Если клиент в режиме приёма файла, то...
 if Receive then
   // Записываем данные в буфер
   Writing(sr_text)
 // Если клиент не в режиме приёма файла, то...  
 else
   begin
     // если сервер посылает файл то...
     if Copy(sr_text,0,Pos("#",sr_text)-1)="file" then // Если это файл, то...
       begin
         // Создаём буфер для файла
         MS :=TMemoryStream.Create;
         // Определяем имя файла
         Delete(sr_text,1,Pos("#",sr_text));
         // Определяем имя файла
         Name :=Copy(sr_text,0,Pos("#",sr_text)-1);
         // Определяем размер файла
         Delete(sr_text, 1, Pos("#", sr_text));
         // Определяем размер файла
         Size := StrToInt(Copy(sr_text, 0, Pos("#", sr_text) -1));
         Panel3.Visible:=True;
         // Удаляем последний разделитель
         Delete(sr_text, 1, Pos("#", sr_text));
         // Выводим размер файла
         Label1.Caption := "Размер файла: "+IntToStr(Size)+" байт";
         // Выводим имя файла
         Label2.Caption := "Имя файла: "+Name;
         // Переводим сервер в режим приёма файла
         Receive := true;
         // Записываем данные в буфер
         Writing(sr_text);
       end;
   end;
end;


 
имя   (2004-03-24 00:57) [4]

Удалено модератором


 
Александр1 ©   (2004-03-24 20:20) [5]

Удалено модератором
Примечание: Оффтоп...



Страницы: 1 вся ветка

Текущий архив: 2004.05.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
6-1080020357
Ламерочек
2004-03-23 08:39
2004.05.16
email


1-1083325285
Sema
2004-04-30 15:41
2004.05.16
Как вставить гиперссылку в документ word ?


14-1082720498
Андрей Сенченко
2004-04-23 15:41
2004.05.16
Так кто же ты ?


14-1082707152
Alexei Sviridov
2004-04-23 11:59
2004.05.16
Наставте на путь истинный


14-1083145114
zav_bars
2004-04-28 13:38
2004.05.16
О инсталере