Probleme mit ObjectOutputStream!

  • Themenstarter Themenstarter JayJay
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
J

JayJay

Gast
Hi,

ich lass bei mir zwei programme miteinander kommunizieren.

Ich verwende dabei das ObjectInputStream bzw. ObjectOutputStream objekt.

dabei handelt es sich um folgende Klasse:

Code:
class message implements Serializable
{
  public Object obj;
  public int type;
}

Das objekt kann immer unterschiedlich sein. Das ganze funktioniert auch wunderbar. Nur dauert der datenaustausch sehr sehr lange teilweise bis zu 250ms.
Die daten sind teilweise nur ein paar stings.

Woran könnte das denn liegen, jemand eine idee??


Ciao
 
Wie kommunizieren denn die Programme miteinander?
Sind es Klassen in einem Java-Programm, die miteinander kommunizieren, oder zwei Java-Applikationen?
Wozu benötigst du serialisierte Objekte?
 
Naja über das serialisieren könnten doch die objekte über ObjectInput/OutputStream verschickt werden??

Es sind zwei vollständig getrennte Java-Programm die miteinander kommunizieren!
 
ICh hab das ganze mal profilt:


Point1: 0
Point2: 0
Point3: 0
Point3a: 0
Point4: 10
Point5: 341

Point 3 auf 4 schreibt eine Nachricht:

von Point 4 auf 5 wird liest programm A(Client) von B(Server) ein leeres packet.
(hab ich extra so gemacht)

D.h. egal welche nachricht geschickt wird das ganze dauert ca. 200-300 ms.

Es wird auf dem server ein thread für den client geöffnet, kann das evt. damit kollidieren?
 
hmm.. wie es aussieht braucht folgender code die Zeit:

Code:
message req= (message)input.readObject();
// ab hier
message res = new message();
					
output.writeObject( res);
// bis hier
 
ACHTUNG: Ich muss meinen letzten Post korrigieren !!

Es sind immer die input.readObject(); funktioinen welche bis zu 200ms brauchen.

die out.out.writeObject( message ); funktion nimmt nicht mehr als 20ms in anspruch.

So nur warum das ganze??
 
Ich weiß nicht..., ich fände es besser, die Programme über Sockets miteinander kommunizieren zu lassen.
 
Wird doch gemacht?

Es wird eine Socket Verbindung aufgebaut, die dann ein ObjectOutputStream zum Schreiben verwemdet!
 
Hab das Ganze jetzt auf einem Rechner ausprobiert, d.h. beide Applikationen laufen auf der gleichen Seite (davor auf zwei rechnern).

Wie es aussieht gibt es hier bessere Ergebnisse! Das wsa 200 ms gedauert hat dauert jetzt 0 - 10.


Am Netzwerk kann das wahrscheinlich nicht liegen...100Mbit?!!
 
Es sind immer die input.readObject();
funktioinen welche bis zu 200ms brauchen.
könnte dran liegen, dass beim geblockt wird und die methode erst zurückkehren kann, wenn alle Bytes gelesen sind

wenn der server nix schickt, dann bleibt das Programm an der Stelle ganz stehen
 
jep hab ich mal ausprobiert hab aber nur eine verbesserung von 50ms bekommen.
 
Mach ein java.io.Externalizable daraus, dann wird es etwas schneller.
 
Die Pingzeit sind einwandfrei. < 1 ms.
Hab das ganze auch mit einem anderen Rechner ausprobiert. das problem beibt bestehen.
 
Die Pingzeit sind einwandfrei. < 1 ms.
Hab das ganze auch mit einem anderen Rechner ausprobiert. das problem beibt bestehen.


java.io.Externalizable wird auch nicht wirklich helfen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben