Serialialiserte Objekte übers Netzwerk verschicken

Status
Nicht offen für weitere Antworten.
P

psy_gast

Gast
Hi

Also, mein Plan ist es serlialisierte Objekte übers Netzwerk zu verschicken. Ich hab einen Client und einen Server.
Die Netzwerkverbindung ist ok, der Client connected zum Server, die Verbindung wird akzeptiert. Aber es kommt leider wie solls auch anders sein, zu Problemen.

Code:
public class HalloIchBins extends    Thread
                     implements Serializable
{
public void run()
  {
  System.out.println("Hallo Server");
  }

}

Von dieser Klasse erstellt ich ein Objekt und schicke es mit einem writeObject zum Server. Beim Server kommt auch was an...aber wenn ich mir mit diesem Code
Code:
 try
  	 {
           HalloIchBins MyObject = (HalloIchBins ) in.readObject();
           System.out.println("Objekt erhalten");
           MyObject.start();
        }
catch (Exception e)
       {
          System.out.println(e.getMessage);
        }

...den Stream auslese kommt es zu einer Fehlermeldung. Und zwar wird eine null - Exception geworfen. Direkt in der Zeile von in.readObject

Client und Server liegen liegt beiden die HalloIchbins.class vor.

Hat jemand ein Idee woran das liegen könnte ? Bin für jede noch so kleine Hilfe/Hints dankbar.
 

dotlens

Top Contributor
übergibst du denn auch irgendwo das objekt?
die Exception bedeuted das das gelesene Objekt null ist.

zeig mal den doce mit writeObject(); und den in dem du es über das Netzwerk schickst
 
P

psy_gast

Gast
Servus

Die Threads hab ich jetzt rausgenommen, aber der Fehler tritt immer noch auf.
Code:
public class HalloIchBins implements Serializable
{
public void run()
  {
  System.out.println("Hallo Server");
  }

}

Also hier noch ein bissl code :

Mit diesem hier sollen die Objekte übers Netz verschickt werden. Gedanke ist der, dass irgendwann mehrere Objekte verschickt werden, welche alle die Oberklasse HalloIchBins haben :
Code:
public boolean sendeObjekte (HalloIchBins sendeObjekt)
{
try
	      {
	         out.writeObject(sendeObjekt);
	     }
	    catch (IOException e)
	        {
	        e.printStackTrace();
	        return false;
	        }
 return true;
}

Wenn ich in dem obigen Code ein sendeObjekt.run() ausführe ist das Objekt noch nicht null.


Die serverseitige Verbindung wurde wie folgt aufgebaut :
Code:
ServerSocket serverSocket = new ServerSocket(port);
		
acceptedSocket = serverSocket.accept();
in = new ObjectInputStream(acceptedSocket.getInputStream() );
out = new ObjectOutputStream(acceptedSocket.getOutputStream());

Der Client Code :
Code:
TransmitSocket = new Socket(server,port);
out = new ObjectOutputStream(TransmitSocket.getOutputStream() );
in = new ObjectInputStream(TransmitSocket.getInputStream() );
 

dotlens

Top Contributor
versuch mal einen String zu schicken. klappt das? ansonsten hast du dein Prgramm irgendwie falsch aufgebaut....
 
P

psy_gast

Gast
einen String kann ich verschicken. das funktioniert einwandfrei.

das mit dem Objekt verschicken klappt auch, aber nur einmal. wenn ich es zum ersten mal schicke kommt auf dem Server die Ausgabe und wenn ich es ein zweites mal schicke, dann ist es null.

Code:
public synchronized void run() 
  {
  
  Thread myThread = Thread.currentThread();
   	
  	 while(true)
  	     
            {
  	   try
  	    {
  	   
    
        HalloIchBinsMyObject = (HalloIchBins) in.readObject();
         System.out.println("Objekt erhalten");
         MyObject.run();
  	         
    	
            }
  	 catch (Exception e1) // geworfen von readObject
     {
     System.out.println(e1.getMessage());
     
     } 
     
}
 

dotlens

Top Contributor
schickst du es denn auch mehrmals??
sobald du das Objekt gelsen hast ist es weg. dann musst du ein neues schicken...
 
P

psy_gast

Gast
ja ich schicke es auch mehrmals...wird über eine ActionEvent (ButtonClick) versendet...

was mir auch noch aufgefallen ist...also den Code den ich oben gepostet habe funktioniert so nicht :

Code:
HalloIchBinsMyObject = (HalloIchBins) in.readObject();
System.out.println("Objekt erhalten");
MyObject.run();

wenn ich aber folgenden Code verwende, dann führt er das Objekt nur einmal aus..bei weiterem versenden kommt wieder die null

Code:
System.out.println(in.readUTF);
HalloIchBins MyObject = (HalloIchBins) in.readObject();
System.out.println("Objekt erhalten");
MyObject.run();

ich versteh die Welt nicht mehr...nur weil ein System.out davor steht, führt er es zumindest einmal aus....noch einmal ausführen, führt wieder zur null.

wenn ich writeObject sage, schickt er das Objekt sofort oder wartet er bis erst ein Puffer gefüllt ist ?
 

Bleiglanz

Gesperrter Benutzer
du hast ja zwei programme laufen

den Abschicker

den Empfänger

bist du sicher, dass du noch alles im Griff hast?

Willst du

* in.readObject() mehrmals mit gleichem stream aufrufen?

* wenn ja, schreibt der writer mehrere Objekte raus?

* ODER bei jedem Start mit Accept einen neuen Socket aufmachen?

irgendwie wird man aus deinem Code nicht schlau...wie machst du das eigentlich beim Testen?

java Abschicker &

java Empfänger &

beide in Endlosschleife????
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T JSON-Objekte richtig parsen Netzwerkprogrammierung 8
L Socket Wie kann man in Java die Anzahl der Objekte in einem InputStream sehen ohne ihn durchgehen zu müssen Netzwerkprogrammierung 1
E Objekte versenden, Client-Server Netzwerkprogrammierung 25
A RMI RMI - Thread Objekte übertragen und auf anderer Machine weiterlaufen lassen Netzwerkprogrammierung 0
C List Deserialisierung entfernt Objekte Netzwerkprogrammierung 2
F HTTP Serialisierte Objekte aus Datei von Server Netzwerkprogrammierung 1
H Socket Objekte über Socket? Allgemeine Verständnisprobleme in Sachen Socket Netzwerkprogrammierung 3
V Socket Objekte werden nicht aktualisiert Netzwerkprogrammierung 2
S Socket Über UDP Objekte verschicken Netzwerkprogrammierung 9
B Eigene Objekte per RMI übergeben Netzwerkprogrammierung 2
S Kapselung der Netz-Objekte Netzwerkprogrammierung 3
B verschiedene Serialisierte Objekte identifizieren? Netzwerkprogrammierung 5
T Objekte im NIO unblocking mode versenden Netzwerkprogrammierung 11
C Socket ObjectInputStream liest nur Objekte der jeweiligen Programminstanz Netzwerkprogrammierung 5
G Frage zu Servlets und deren Objekte + Bilder in Servlets anzeigen? Netzwerkprogrammierung 11
G Objekte per TCP verschicken + Thread Netzwerkprogrammierung 4
T Laufen Objekte, die vom Cajo-Server geliefert werden, lokal auf dem Client? Netzwerkprogrammierung 4
T Inputstream -> verschiedene Objekte lesen Netzwerkprogrammierung 3
I Objekte über das Netzwerk Netzwerkprogrammierung 5
M Messenger - String oder Objekte Netzwerkprogrammierung 4
S Netzwerk und Objekte Netzwerkprogrammierung 5
S RMI 1.) Entfernte Objekte "Zwischenspeichern" 2.) Threadsicherheit Netzwerkprogrammierung 2
T rmi ssl zu große Objekte übergeben -> Exception Netzwerkprogrammierung 10
A Konflikt: Blocking und Non-Blocking bei Objekte versenden Netzwerkprogrammierung 4
N RMI und Datenbank Objekte Netzwerkprogrammierung 3
P Objekte über DatagramSocket versenden Netzwerkprogrammierung 12
R Mittels BufferedReader Objekte lesen? Netzwerkprogrammierung 5
M Objekte senden zwischen Java und PHP mit SOAP Netzwerkprogrammierung 9
A Objekte in übergebenen Objekten mit WebServices? Netzwerkprogrammierung 6
A RMI wie kann ich objekte übergeben? Netzwerkprogrammierung 5
S Objekte zwischen Client und Server über Sockets senden Netzwerkprogrammierung 2
I ActiveMQ-Messages übers Netzwerk Netzwerkprogrammierung 13
D Socket-Verbindungen übers Internet Netzwerkprogrammierung 4
I PingPong Spiel übers Netzwerk Netzwerkprogrammierung 1
M Kommunikation übers Internet Netzwerkprogrammierung 9
E Java Server übers Internet erreichen Netzwerkprogrammierung 4
N RMI Einstellungen für "übers Internet" Netzwerkprogrammierung 8
N Gedankenspiel Synchronisation zweier Datenbanktabellen übers Netz Netzwerkprogrammierung 4
H Eine Mac-Adresse übers Internet ermitteln Netzwerkprogrammierung 2
X Password übers Netzwerk schicken jPasswordField Netzwerkprogrammierung 2
Y server client socket verbindung übers internet aufbauen Netzwerkprogrammierung 8
M Socket JFileChooser übers Internet Netzwerkprogrammierung 32
W funktionen übers netzwerk nutzen Netzwerkprogrammierung 4
W browse / durchsuchen übers netz Netzwerkprogrammierung 2
Kr0e Versenden von Daten übers Netzwerk Netzwerkprogrammierung 30
H MySQL übers Netzwerk Netzwerkprogrammierung 9
T Pfadangabe beim kopieren übers Netzwerk Netzwerkprogrammierung 5
M Daten übers Netz verschlüsselt übertragen? Wie? Netzwerkprogrammierung 18
A array übers netzwerk (anfänger) Netzwerkprogrammierung 8
R File chooser übers Netzwerk Netzwerkprogrammierung 3
S Netzwerk übers Internet Netzwerkprogrammierung 30
H Dateigröße übers Internet Netzwerkprogrammierung 3
S Socketverbindung übers WWW Netzwerkprogrammierung 6
G Verzeichnis eines Rechners übers Netzwerk auslesen Netzwerkprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben