Главная страница
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
14-10900
Soft
2003-08-18 13:58
2003.09.04
Как просто заработать 3 биллиона.


14-10874
Axis_of_Evil
2003-08-14 16:23
2003.09.04
---|Ветка была без названия|---


7-10995
цоб
2003-06-17 19:33
2003.09.04
<CTRL-ALT-DEL> под Win XP home ed.


14-10934
Anatoly Podgoretsky
2003-08-16 10:07
2003.09.04
Об оптимизации


1-10804
c13
2003-08-20 09:15
2003.09.04
Помогите с TClientSocket и TServerSocket