Главная страница
    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.46 MB
Время: 0.036 c
14-1082720498
Андрей Сенченко
2004-04-23 15:41
2004.05.16
Так кто же ты ?


1-1082552307
Ivolg
2004-04-21 16:58
2004.05.16
Поздровлялка


14-1082617554
Игорь Шевченко
2004-04-22 11:05
2004.05.16
Еще задачка :)


6-1080031119
dnsokol
2004-03-23 11:38
2004.05.16
Подключение Telnet клиентов к серверу и как это разрулить?


1-1082523490
Checist [root]
2004-04-21 08:58
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский