/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Save a UDP stream
Fra : Wiljan


Dato : 25-06-06 19:03

Hej

Jeg bruger D7 og Indy til at modtage en UDP stream fran en hardware boks der
sender et videosignal (Mpeg2) ud som UDP stream.

Jeg bruger IdUDPServer1 og hver gang der er en event IdUDPServer1UDPRead så
kalder programmet følgende procedure

procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
begin
if AData.Size> 0 then
begin
count := AData.Size;
if count > Length(Buffer) then begin
exit;
end
else
begin

label4.Caption:= inttostr (Adata.Size);
AData.ReadBuffer(Buffer, count);

count_save := count_save + count;

//-----try to write to file
if save_to_file = true then
begin
BlockWrite(f, buffer,count);
total_hytes:=total_hytes+count;
end;
end;

total_count:=total_count+count;
total_blocks:=total_blocks+1;
end;

Dette virker egentligt meget godt, men ikke altid
Der bliver typisk sendt UDP pakker på en 1400 bytes af gangen og da jeg
kender størelsen på den file der bliver sendt fra hardware boksen... ja så
for venter jeg jo at få den samme fil på modtage siden. (min test file er ca
6 Mbytes)
Sommetider er den rigtig andre gange er den for lille... dvs der bliver
mistes en pakke... jeg tror det skyldes at jeg kalder blokwrite så ofte med
så små blokke.... er her nogen forslag til at gøre det bedre?
Evt link til noget kode der kan recorde en UDP stream

Wiljan





 
 
Michael Zedeler (26-06-2006)
Kommentar
Fra : Michael Zedeler


Dato : 26-06-06 00:03

Wiljan wrote:
> [...]
> Sommetider er den rigtig andre gange er den for lille... dvs der bliver
> mistes en pakke... jeg tror det skyldes at jeg kalder blokwrite så ofte med
> så små blokke.... er her nogen forslag til at gøre det bedre?
> Evt link til noget kode der kan recorde en UDP stream

UDP er indrettet sådan at der ikke er garanti for at pakkerne når frem
over netværket. Det kan være årsagen. Samtidig skal du være opmærksom på
at pakkerne kan nå frem i en anden rækkefølge, end de blev sendt afsted.

Hvis den protokol du benytter ovenpå UDP understøtter det, kan du måske
bede om at få retransmitteret de pakker der ikke er nået frem.

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
I am less likely to answer usenet postings by anonymous authors.
Visit my home page at http://michael.zedeler.dk/

Wiljan (26-06-2006)
Kommentar
Fra : Wiljan


Dato : 26-06-06 09:03

> UDP er indrettet sådan at der ikke er garanti for at pakkerne når frem
> over netværket. Det kan være årsagen. Samtidig skal du være opmærksom på
> at pakkerne kan nå frem i en anden rækkefølge, end de blev sendt afsted.

Det er jeg klar over, men her er tale om på LAN og hvis men bruger hardware
bokse i begge ender er der aldrig fejl.
>
> Hvis den protokol du benytter ovenpå UDP understøtter det, kan du måske
> bede om at få retransmitteret de pakker der ikke er nået frem.

Det er ikke muligt på det udstyr jeg roder med


Jeg tror stadig det er min blockwrite der driller...

Wiljan



Michael Zedeler (26-06-2006)
Kommentar
Fra : Michael Zedeler


Dato : 26-06-06 09:50

Wiljan wrote:
>>UDP er indrettet sådan at der ikke er garanti for at pakkerne når frem
>>over netværket. Det kan være årsagen. Samtidig skal du være opmærksom på
>>at pakkerne kan nå frem i en anden rækkefølge, end de blev sendt afsted.
>
>
> Det er jeg klar over, men her er tale om på LAN og hvis men bruger hardware
> bokse i begge ender er der aldrig fejl.
>
>>Hvis den protokol du benytter ovenpå UDP understøtter det, kan du måske
>>bede om at få retransmitteret de pakker der ikke er nået frem.
>
> Det er ikke muligt på det udstyr jeg roder med
>
> Jeg tror stadig det er min blockwrite der driller...

Hvis du tror at det er blockwrite,d er driller, så prøv at skære selve
netværksdelen væk, lav noget kode som simulerer modtagelsen af pakkerne
og se om fejlen stadigvæk dukker op.

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
I am less likely to answer usenet postings by anonymous authors.
Visit my home page at http://michael.zedeler.dk/

Wiljan (04-08-2006)
Kommentar
Fra : Wiljan


Dato : 04-08-06 12:57

Hej

Nu har jeg testet noget mere med programmet og det er selve UDread der
driller

Det er tydeligt at hvis der ikke er andre cpu krævende processer der kører
virker det fint...
Men skal PC laveret andet (f.eks save til disk) går det galt

Selve streaming programmet bruger ca. 20% CPU
Så mit problem er mere havordan jeg får UDPread thread til at have high
priotity... any hint?

Hilsen Wiljan



Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste