Форум: "Потрепаться";
Текущий архив: 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.053 c