title: Sending populated object to server and receiving message back
body: <p>I am trying to send a student object which populated with the student details to a specific server and then read the message sent back from the server. </p>
  
  <p>Main class:</p>
  
  <pre><code>public class Lab6 {
      Socket myClient;
      ObjectOutputStream outputStream;
  
      public void socket() {
          try {
              myClient = new Socket("217.73.66.75", 7879);
          }
          catch (UnknownHostException e) {
              System.out.println(e);
          }
          catch (IOException e) {
              System.out.println(e);
          }
      }
  
      public void objectWriter() {
          try {
             myClient = new Socket("217.73.66.75", 7879);
             outputStream = new ObjectOutputStream(myClient.getOutputStream());
             Student student = new Student(22, "Dave Smith", "130017639", "dave.smith@city.ac.uk");
             System.out.println("Student Details:" + student.toString());
             outputStream.writeObject(student);
  
          }
          catch (UnknownHostException e) {
              System.out.println(e);
          }
          catch (IOException e) {
              System.out.println(e);
          }
      }
  
      /**
       *
       */
      public void objectReader() {
          try {
              ObjectInputStream inputStream = new ObjectInputStream(myClient.getInputStream());
              Student returnMessage = (Student) inputStream.readObject();
              System.out.println("return Message is=" + returnMessage); 
              myClient.close();
              inputStream.close();
          }
          catch (IOException e) {
              System.out.println(e);
          }
          catch (ClassNotFoundException ex) {
              System.out.println("ERR: Cannot perform input. Class not found." + ex);
          }
      }
  
      /**
       * @param args the command line arguments
       */
      public static void main(String[] args) {
          Lab6 ss;
          ss = new Lab6();
          ss.socket();
          ss.objectWriter();
          ss.objectReader(); 
      }
  }
  </code></pre>
  
  <p>Student class:</p>
  
  <pre><code>import java.io.Serializable;
  
  public class Student implements Serializable {
      private static final long serialVersionUID = -1848148348931789644L; 
  
      private String name;
      private int age;
      private String studentID;
      private String email;
      public String gender = "na";
      public static int instances = 0;
  
      // Getters
      public int getAge(){
          return this.age;
      }
      public String getName(){
          return this.name;
      }
      public String getStudentID(){
          return this.studentID;
      }
      public String getEmail(){
          return this.email;
      }
  
      // Setters
      public void setAge(int age){
          this.age = age;
      }
      public void setName(String name){
          this.name = name;
      }
      public void setStudentID(String studentID){
          this.studentID = studentID;
      }
      public void setEmail(String email){
          this.email = email;
      }
  
      /**
       * Default constructor. Populates age and gender with defaults
       */
      public Student(){
          this.age = 18;
          this.name = "Not Set";
          this.studentID = "Not Set";
          this.email = "Not Set";
      }
  
      /** 
       * Constructor with parameters 
       * @param age integer
       * @param name String with the name
       * @param studentID String with the studentID
       * @param email String with the email
      */
      public Student (int age, String name, String studentID, String email){
          this.age = age;
          this.name = name;
          this.studentID = studentID;
          this.email = email;
      }
      /** 
       * Gender constructor
       * @param gender 
       */
      public Student(String gender){
          this(); // Must be the first line!
          this.gender = gender;
  
      }
  
      protected void finalize() throws Throwable{
          //do finalization here
          super.finalize(); //not necessary if extending Object.
      } 
  
      /*************************************************************************
       * My Methods:
       * 
       *************************************************************************/
  
      public String toString (){
          return "Student ID: " + studentID + "Name: " + this.name + " Age: " 
                  + this.age + " Gender: " + this.gender + "Email: " + email;
      }
  }
  </code></pre>
  
  <p>The problem is that all it does is print out the student details on the console and the program just says running. Please help me find what Im doing wrong.</p>