Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];

Вниз

Посылка jpg через UDP   Найти похожие ветки 

 
neodiX   (2002-06-12 19:51) [0]

Всем привет!
Проблема такая: нужно переслать jpg по UDP (я использую инди UDP т.е idUdpClient & idUdpServer). Как я понял инди UDP разрешает за один раз послать 8кб, a мне надо больше, примерно 200кб. Я режу файл на куски и посылаю. Проблема как их (куски) принять и востоновить jpg. В примере ниже я разрезаю файл на две части(файл не превышает 16кб) и посылаю. При получении жду второго пакета, получив нe могу</б> востанавить jpg :(
//------------------------------------------------
var
Form1: TForm1;
i:byte=0;
m:tmemorystream;
procedure TForm1.FormCreate(Sender: TObject);
begin
m:=tmemorystream.Create;
m.Position:=0;
end;
//Посылаю
procedure TForm1.Button5Click(Sender: TObject);
var jpg:tjpegimage;
ms:tmemorystream;
s,a:string;
i,j,y:longint;
begin
jpg:=tjpegimage.Create;
ms:=tmemorystream.Create;
jpg.LoadFromFile("d:\файл.jpg");
jpg.SaveToStream(ms);
i:=ms.Size div 2;
j:=ms.Size-i;
ms.Position:=0;
SetString(S, nil, i);
Ms.Read(Pointer(S)^, i);
SetString(a, nil, j);
Ms.Read(Pointer(a)^, j);
idudpclient1.Send("127.0.0.1",4000,s);
idudpclient1.Send("127.0.0.1",4000,a);
end;
//Принимаю
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var a:string;
j:tjpegimage;
begin
memo1.Lines.Add(inttostr(adata.Size));
adata.Position:=0;
inc(i);
m.Write(adata,adata.Size);
if i=2 then begin
j:=tjpegimage.Create;
j.LoadFromStream(m);
image1.Picture.Graphic:=j;
j.Free;
end;
Мастера! Может знаете что я делаю не так, в чем ошибка? Или подскажите как увеличить размер UDP пакета. Короче, любая помощь и советы будут полезны. Заранее всем спасибо за ответы.
П.С. Заметье, на сервере йпг сразу должен отображатся в image1, а не сохраняться в файл. Это очень важно.


 
SerVS   (2002-06-12 23:38) [1]

А чем тебе не нравиться TCP? Проблема что УДП имеет ограничение на размер пакета, так что произвольную катринку все-равно не пошлеш, а собирать самому, имхо это изврат. Проще по ТСП и работаешь как с поток - никаких проблем. Я так посылал картинку больше метра, и нормально


 
neodiX   (2002-06-13 18:10) [2]

>SerVs
Понимаешь, мне надо эту картинку (в моем случае изображение) не одному компу посылать, а нескольким (для этого лучше всего broadcast). Причем все это должно происходит как можно быстрее.
P.S. Sorry, тэг фигово закрыл.


 
neodiX   (2002-06-20 20:17) [3]

Мастера! Неужели это так сложно?


 
Мороз Павел   (2002-06-28 16:45) [4]

А может надо не так
> m.Write(adata,adata.Size);
а так
m.CopyFrom(AData, AData.Size)?
Сам не пробовал.


 
SerVS   (2002-07-01 14:48) [5]

neodiX ©
Ты мой ответ внимательно читал?
ТСР! Сделай того кто шлет сервером, пусть они к нему конектяться и скачивают. А вот уведомления о том что что-то изменилось можешь кидать по удп



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

Форум: "Сети";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.022 c
14-14244
lak_b
2002-08-08 10:39
2002.09.05
понизить битрейт mp3


3-13932
af
2002-08-14 17:46
2002.09.05
составляю небольшую прогу с базой данных c BDE


14-14246
Malder
2002-08-07 00:22
2002.09.05
UBPFD


1-14080
EugenCFG
2002-08-23 12:58
2002.09.05
Мастера... Как мне узнать, что у PageControl1 есть Tabsheet.Ca...


7-14301
Андрей111
2002-06-24 13:05
2002.09.05
Сканер





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский