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

Вниз

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

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

Наверх





Память: 0.46 MB
Время: 0.032 c
14-1082840890
NeyroSpace
2004-04-25 01:08
2004.05.16
Хотя я не ругаюсь, но нашел этот ресурс полезным для себя :-)


1-1083249482
Berzercer
2004-04-29 18:38
2004.05.16
Можно ли раскрасить строки в Tmemo


3-1082642735
RomCom
2004-04-22 18:05
2004.05.16
Поля с данными Null в TQuery+TUpdateSQL


3-1082634420
Frozzen
2004-04-22 15:47
2004.05.16
Позиция курсора в DBGrid


6-1079963832
Санек
2004-03-22 16:57
2004.05.16
Как получить список имен домена ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский