Главная страница
    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
1-1083137100
Fast
2004-04-28 11:25
2004.05.16
Crypto 3DES


1-1083527200
DeOptric
2004-05-02 23:46
2004.05.16
Ссылка в Richedit


8-1076921082
AlexV
2004-02-16 11:44
2004.05.16
Как получить размер изобр jpg,bmp файлов,не загружая их в память?


3-1082118710
Nikolai_S
2004-04-16 16:31
2004.05.16
Помогите с SQL для хранимой процедуры...


7-1081249738
Gamlet
2004-04-06 15:08
2004.05.16
Сообщение WM_Char





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