Главная страница
    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.053 c
1-14156
Kolya
2002-08-25 05:27
2002.09.05
Combobox


4-14356
S@rge
2002-07-03 01:00
2002.09.05
CreateRemoteThread в Win98


14-14212
AL2002
2002-08-08 17:08
2002.09.05
Так есть прога, которая с дайджестами работает?


1-14141
SaperXL
2002-08-24 12:18
2002.09.05
помогите с OLE на Delphi


3-13931
elvira
2002-08-15 13:50
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский