Главная страница
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.021 c
3-10656
valmont
2003-08-12 06:04
2003.09.04
работы без BDE


1-10708
pkert
2003-08-20 16:56
2003.09.04
Invalid pointer operation


1-10743
uhhax
2003-08-20 02:04
2003.09.04
TCheckListBox и TMemo


3-10651
Жук
2003-08-12 09:45
2003.09.04
Исключение при выполнении параметрического запроса


3-10640
Rav
2003-08-12 19:05
2003.09.04
---|Ветка была без названия|---