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

Вниз

Не получается правильно переслать файл по сети   Найти похожие ветки 

 
Yegorchic ©   (2006-03-02 00:30) [0]

Здравствуйте! Я пытаюсь переслать файл по сети таким способом:

Код программы-отправителя:

ms:=TMemoryStream.Create;
ms.Position:=0;
ms.LoadFromFile("file.cab");
IdUDPClient1.Active:=true;
IdUDPClient1.SendBuffer(ms, ms.Size);


Вот. Всё отправляется хорошо, вроде.

Код программы получателя:

procedure TForm1.Server2UDPRead(Sender: TObject; AData: TStream;
 ABinding: TIdSocketHandle);
var ms: TMemoryStream;
begin
ms:=TMemoryStream.Create;
ms.LoadFromStream(AData);
ms.SaveToFile("file.cab");
...
end;


В результате, размер полученного файла правильный, а содержимое совершенно другое, которое не ясно откуда взялось.

Что я сделал не так?


 
Eraser ©   (2006-03-02 00:44) [1]


> Yegorchic ©   (02.03.06 00:30)

1. При отсылке через UDP размер буффера ограничен размером дейтаграммы.
2.
> IdUDPClient1.SendBuffer(ms, ms.Size);


IdUDPClient1.SendBuffer(ms.Memory^, ms.Size);


 
Yegorchic ©   (2006-03-02 00:51) [2]

Извините, я ещё не сильно во всём это деле разбираюсь, но что такой "дейтаграмма"?

Я исправил (2), и у меня теперь вылезает "the package size is too big".
Размер файла примерно 60-70kb.


 
Eraser ©   (2006-03-02 01:21) [3]


> Yegorchic ©   (02.03.06 00:51) [2]


> Я исправил (2), и у меня теперь вылезает "the package size
> is too big".

:-) ну вот это то, о чём я и предупреждал. Дословно - "размер пакета (дейтаграммы) слишком большой".
Грубо говоря, дейтаграмма - это пакет данных с каким-то ограниченным размером. В компонентах Indy по-умолчанию размер буффера 8192, в большенстве случаев это меньше размера дейтаграммы.
В твоём случае лучше применять TCP для передачи файла.

Лучше почитай литературу соотв. тематики, по сетям на базе TCP/IP.


 
Eraser ©   (2006-03-02 01:51) [4]


> Yegorchic ©   (02.03.06 00:51) [2]

вот для начала можешь почитать
http://podgoretsky.com/cgi-bin/dlcounter/npscnt?file=http://podgoretsky.com/ftp/Docs/Internet/IntroIndy/IndyInDepth.pdf&file_id=IndyInDepth


 
Yegorchic ©   (2006-03-02 15:18) [5]

Спасибо. Я кнужку, кстати, ещё давно списал, но подумал, что тут дело в это TMemoryStream...
Ну, вообщем, спасибо!



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

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

Наверх




Память: 0.48 MB
Время: 0.044 c
3-1147233895
OrenYastreb
2006-05-10 08:04
2006.07.09
Ввод пароля в Paradox


2-1150811926
Тимофей Юрьевич
2006-06-20 17:58
2006.07.09
скан сети на 21 порт


2-1150542953
Андрей из Смоленска
2006-06-17 15:15
2006.07.09
Как выдрать координаты из файла, созданого осциллографом? :)


15-1148747923
Nic
2006-05-27 20:38
2006.07.09
Прибыльный софт?


2-1150797351
Unknowing
2006-06-20 13:55
2006.07.09
Файлы данных