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

Вниз

Вот везде есть примеры как отправить поток данных по сети...   Найти похожие ветки 

 
Knight ©   (2004-11-07 01:40) [0]

... но нигде не попадается, как его принять... Кто знает?


 
mike-d ©   (2004-11-07 13:31) [1]

стою на асфальте я в лыжи обутый...
толи лыжи не едут, толи я еба...


 
Knight ©   (2004-11-07 16:15) [2]


> Knight ©   (07.11.04 01:40)
> ... но нигде не попадается, как его принять... Кто знает?

http://www.delphimaster.ru/articles/socksrv/index.html

Посылка файлов через сокет.
Здесь мы рассмотрим посылку файлов через сокет (по просьбе JINX-а) :-). Итак, как же послать файл по сокету? Очень просто! Достаточно лишь открыть этот файл как файловый поток (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))


Отправить-отправили... а принять как? ReceiveBuf -есть... ReceiveText - есть... ReceiveStream - нет...


 
jack128 ©   (2004-11-07 16:51) [3]

я, вобщем то не сетевик, но вот это

TCustomWinSocket.ReceiveBuf
Reads up to Count bytes from the socket connection into the Buf parameter.

function ReceiveBuf(var Buf; Count: Integer): Integer;

наводит меня на определённые подозрения...


 
jack128 ©   (2004-11-07 16:56) [4]

Knight ©   (07.11.04 16:15) [2]
Отправить-отправили... а принять как? ReceiveBuf -есть... ReceiveText - есть... ReceiveStream - нет...


Естественно нету. Когда ты опровляешь поток - ты знаешь сколько байт нужно отправить, а когда читаешь - не знаешь..  Нужно перед отправкой переслать кол-во байт, а при приеме сначала считать это кол-во, а потом уже считывать сам поток.. Что нить типа этого.

{Открываем файл filename}
  srcfile := TFileStream.Create(filename,fmOpenRead);
  {Посылаем его первому подключенному клиенту}
  Count := srcfile.Count - srcfile.Position;
  ServerSocket1.Socket.Connections[0].SendBuf(Count, SizeOf(Integer));
  ServerSocket1.Socket.Connections[0].SendStream(srcfile);

  {Закрываем файл}
  srcfile.Free;

и читает
 with YourSocket do
 begin
   ReceiveBuf(Couunt, SizeOf(Integer));
   SetLength(Buff, Count);
   ReceiveBuf(Buff[1], Count); // Buff- string;
 end;


 
Knight ©   (2004-11-07 17:56) [5]


> [4] jack128 ©   (07.11.04 16:56)
> Естественно нету. Когда ты опровляешь поток - ты знаешь
> сколько байт нужно отправить, а когда читаешь - не знаешь..

Я нет... Но ведь компонент на то и компонент, что если разработчик реализует SendStream, то напрашивается и ReceiveStream... т.е. сам поток отправляешь, то сам его и получи, по кускам так по кускам, но склей как було... :)



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

Форум: "Потрепаться";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.038 c
11-1077803384
ALeXXXX
2004-02-26 16:49
2004.11.21
Немогу понять как добовлять items в TreeView?


14-1099881443
Думкин
2004-11-08 05:37
2004.11.21
С днем рождения! 8 ноября


1-1099475266
ssmaxx
2004-11-03 12:47
2004.11.21
Шестнадцатиричная система исчисления


4-1097486211
aleshap
2004-10-11 13:16
2004.11.21
Как в программе определить, что запустилась "Заставка Экрана"?


14-1099642305
anton2v
2004-11-05 11:11
2004.11.21
что такое reset ?





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