Buffer Grösse ermitteln

TimoTH

Mitglied
Hi zusammen!
Ich versende über eine Netzwerkapplikation Video- und Audiodaten. Versendet werden diese mit javax.media.Buffer Objekten.
Da ich eine Bandbreitenlimitierung implementieren möchte, muss ich die Grösse dieser Objekte ermitteln, wobei ich mich allein auf den Datenteil stütze und die HeaderDaten weglasse.
Die Grösse eines solchen Buffer Objekts sollte sich mit:
Code:
int size = ((byte[])(buffer.getData())).length;
ermitteln lassen. Als Ergebnis erhalte ich da "38400", also 38400 Byte?
Ich habe von meinem Programm das mal eine Sekunde laufen lassen, und käme da auf
614400 Bytes, also 600 Kilobyte pro Sekunde!.
Da kann ja wohl was nicht stimmen.
Was mache ich also falsch?
Danke schonmal für die Hilfe!

Timo
 
Zuletzt bearbeitet:
Moin!
Sind diese "614400 Bytes" die das Programm loswerden will, oder die tatsächlich versendet werden? Hast du denn mal auf der Empfängerseite gemessen, was tatsächlich auch ankommt in einer Sekunde?

*grüssle*
MeinerEiner
 
Hallo!
Also ich habe mal einen Netzwerkanalyser eingesetzt, und dieser zeigt mir realistische 5 Kb/s.
Dennoch, wie kann ich dann die Grösse der von mir versendeten Daten bestimmen?
Ich habe mal jeden Buffer mit einem Timestamp versehen und diesen beim Versenden und Empfangen ausgeben, hier das Ergebnis:

Sende nun id:= 1154442304328
Sende nun id:= 1154442304375
Sende nun id:= 1154442304484
erhalte um:= 1154442304640 id:= 1154442303968
Sende nun id:= 1154442304671
erhalte um:= 1154442304781 id:= 1154442304328
Sende nun id:= 1154442304875
Sende nun id:= 1154442304921
Sende nun id:= 1154442304937
erhalte um:= 1154442305203 id:= 1154442304375
Sende nun id:= 1154442305234
Sende nun id:= 1154442305343
erhalte um:= 1154442305437 id:= 1154442304484
erhalte um:= 1154442305484 id:= 1154442304671
erhalte um:= 1154442305546 id:= 1154442304875
erhalte um:= 1154442305734 id:= 1154442304921
erhalte um:= 1154442305843 id:= 1154442304937
erhalte um:= 1154442305906 id:= 1154442305234
erhalte um:= 1154442305937 id:= 1154442305343

Also, ich habe 1 Sekunde lang gesendet. Insgesamt hat es 1,6 Sekunden gedauert, bis alles auf der Empfängerseite angekommen ist.
Ich habe alles mal durch einen ByteArrayOutputStream laufen lassen, bevor ich es versendet habe:
Code:
while(true){
	PushBufferStream apushbufferstream[] = dataSource.getStreams();
	int i = 0;
	while(i < apushbufferstream.length){
		PushBufferStream camStream = apushbufferstream[i];
		Buffer buffer = new Buffer();
		camStream.read(buffer);
		long time = new Date().getTime();
		System.out.println("Sende nun id:= "+time);
		buffer.setDuration(time);
                BufferWrapper wrapp = new BufferWrapper(buffer);
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                ObjectOutputStream oos2 = new ObjectOutputStream(baos);
                oos2.writeObject(wrapp);
                oos2.flush();
                System.out.println(baos.size());
                baos.writeTo(socketOutputStream);
        }
}
baos.size(); bestätigt mein eigentlich unmögliches Ergebnis von 38400 Bytes und somit gut 210 kilobytes pro Sekunde.
Also ich komme ich nicht wirklich weiter.. Was könnte nur der Fehler sein
Bin für jede Hilfe dankbar!

Gruß!
Timo
 
Zurück