2016-08-30 2 views
-1

ich diese Klasse in meinen beiden Client-und mein ServerObjekt durch Object Senden wird

public class user implements Serializable{ 
int pass; 
String name; 
public user(int pass, String name){ 
    this.pass = pass; 
    this.name=name; 
}//i also have a getPass and a getName 

Hier ist, wie ich Setup die Streams

private void setupStreams() throws IOException{ 
    output = new ObjectOutputStream(connection.getOutputStream()); 
    output.flush(); 
    input = new ObjectInputStream(connection.getInputStream()); 

    showMessage("\n The streams are now set up! \n"); 
} 

Nun, was ich tun möchte, ist ein senden haben blockiert Benutzerobjekt vom Client zum Server Hier ist, was ich tue, auf der Client-Seite:

button1l.addActionListener(
     new ActionListener(){ 
      public void actionPerformed(ActionEvent event){     
       if(isLogin(id)==true){ 
        User user1 = new User(123,"test"); 
        try { 
         output.writeObject(user1); 
         output.flush(); 
        } catch (IOException ex) { 
         Logger.getLogger(ClientClass.class.getName()).log(Level.SEVERE, null, ex); 
        } 

       } 

      } 
     } 
    ); 

und auf der Serverseite:

public void run() { 
     sendMessage("hello there\n"); 

     do{ 
      try{ 
       System.out.println("before\n");//everytime loop it reaches here 
       User user1 = (User) input.readObject(); //but never here 
       System.out.println("read user\n"); 
       System.out.println("x="+ user1.getPass()+ "y=" + user1.getName()); 
      }catch(ClassNotFoundException classNotFoundException){ 
       System.out.println(classNotFoundException);//i just added this println 

      } catch (IOException ex) { 
       Logger.getLogger(ClientThread.class.getName()).log(Level.SEVERE, null, ex); 
      } 
     }while(true); 


    } 

Aber nichts passiert. Keine Fehler, nur ein leerer Bildschirm. Also was mache ich falsch oder ist es der falsche Weg dies zu tun? PS: Nach dem Hinzufügen der println (classNotFoundException); Der Druck, den ich jedes Mal bekomme ich versuche, ist zu senden: java.lang.ClassNotFoundException: client.User ..

Dies ist die Programmstruktur enter image description here

+1

'output.flush();' *** nach *** 'output.writeObject (user1);' –

+0

warum würde das etwas ändern? – Syarx

+0

@Syarx Die Daten können auf der Seite des Absenders gepuffert werden, der Aufruf von 'flush()' wird das System zwingen, den Puffer zu senden. – Titus

Antwort

0

Das Problem scheint zu sein, dass die User Klasse in verschiedenen Paketen ist in den Server- und Client-Programmen.

Damit Instanzen dieser Klasse als ähnliche Objekte betrachtet werden, muss sich die Klasse in beiden Programmen in einem Paket mit demselben Namen befinden.

Verwandte Themen