Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.04;
Скачать: CL | DM;

Вниз

почему не передаются файлы?   Найти похожие ветки 

 
cvv ©   (2003-06-30 15:41) [0]

почему не передаются файлы? где я не прав? передавать файлы
необходимо именно на IdUDPClient/IdUDPServer. может кто кинет
код как это сделать?
(IdUDPClient.Host = 127.0.0.1, IdUDPClient.ReceiveTimeOut = 2000)
Причем если IdUDPServer1.ThreadedEvent = False, то прога вешается
и закрыть ее обычным образом невозможно. спасибо.

передача:
procedure TForm1.Button1Click(Sender: TObject);
var
FSrc: TFileStream;
begin
if OpenDialog1.Execute then begin
FSrc := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
{пусть размер файла <= 8192 }
IdUDPClient1.SendBuffer(FSrc, FSrc.Size);
FSrc.Free;
end; {if}
end;

прием:
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
BufDst: TMemoryStream;
begin
BufDst := TMemoryStream.Create;
BufDst.SetSize(8192);
{функция IdUDPServer1.ReceiveBuffer постоянно возвращает 0.
Почему ничего не получаю?}
if IdUDPServer1.ReceiveBuffer(BufDst, BufDst.Size) > 0 then
( "D:\temp.tmp") почему не передаются файлы? где я не прав? передавать файлы
необходимо именно на IdUDPClient/IdUDPServer. может кто кинет
код как это сделать?
(IdUDPClient.Host = 127.0.0.1, IdUDPClient.ReceiveTimeOut = 2000)
Причем если IdUDPServer1.ThreadedEvent = False, то прога вешается
и закрыть ее обычным образом невозможно. спасибо.

передача:
procedure TForm1.Button1Click(Sender: TObject);
var
FSrc: TFileStream;
begin
if OpenDialog1.Execute then begin
FSrc := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
{пусть размер файла <= 8192 }
IdUDPClient1.SendBuffer(FSrc, FSrc.Size);
FSrc.Free;
end; {if}
end;

прием:
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
BufDst: TMemoryStream;
begin
BufDst := TMemoryStream.Create;
BufDst.SetSize(8192);
{функция IdUDPServer1.ReceiveBuffer постоянно возвращает 0.
Почему ничего не получаю?}
if IdUDPServer1.ReceiveBuffer(BufDst, BufDst.Size) > 0 then
BufDst.SaveToFile("D:\temp.tmp");
BufDst.Free;
end;


 
jel ©   (2003-06-30 16:52) [1]

IdUDPClient1.SendBuffer( FSrc, FSrc.Size);
( BufDst, BufDst.Size) IdUDPClient1.SendBuffer( FSrc, FSrc.Size);

Это указатель на экземпляр потока, а не данные.
Если уж передавать то сам файл. То есть читать из потока в буфер и отправлять в сеть.
С приемом - то же самое, хорошо еще что не AV получаешь.

> IdUDPServer1.ReceiveBuffer(BufDst, BufDst.Size)

Вдумайся в эту строку.


 
cvv ©   (2003-07-01 12:27) [2]

спасибо.



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

Текущий архив: 2003.09.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.022 c
1-10762
Nick_Omsk
2003-08-22 16:09
2003.09.04
Как организовать LOG?


3-10614
valeriy
2003-08-13 15:14
2003.09.04
клик по заголовку столбца таблицы


3-10551
-=[SDA]=-
2003-08-12 07:19
2003.09.04
Можно ли программно настроить алиас?


1-10745
Borgir
2003-08-25 08:36
2003.09.04
Прерывание функции


3-10546
AlexSh
2003-08-12 10:49
2003.09.04
Выбор дублей записей в базе