ServerSocket and Socket for Serializable object


import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Iterator;
import java.util.Vector;

class ComplexCompany implements Serializable {
  private String name;

  private ComplexEmployee president;

  private Vector departments;

  public ComplexCompany(String name) {
    this.name = name;
    departments = new Vector();
  }

  public String getName() {
    return this.name;
  }

  public void addDepartment(ComplexDepartment dept) {
    departments.addElement(dept);
  }

  public ComplexEmployee getPresident() {
    return this.president;
  }

  public void addPresident(ComplexEmployee e) {
    this.president = e;
  }

  public Iterator getDepartmentIterator() {
    return departments.iterator();
  }

  public void printCompanyObject() {
    System.out.println("The company name is " + getName());
    System.out.println("The company president is " + getPresident().getName());
    System.out.println(" ");

    Iterator i = getDepartmentIterator();
    while (i.hasNext()) {
      ComplexDepartment d = (ComplexDepartment) i.next();
      System.out.println("   The department name is " + d.getName());
      System.out.println("   The department manager is " + d.getManager().getName());
      System.out.println(" ");
    }
  }

}

class ComplexDepartment implements Serializable {
  private String name;

  private ComplexEmployee manager;

  public ComplexDepartment(String name) {
    this.name = name;
  }

  public String getName() {
    return this.name;
  }

  public ComplexEmployee getManager() {
    return this.manager;
  }

  public void addManager(ComplexEmployee e) {
    manager = e;
  }
}

class ComplexEmployee implements Serializable {
  private String name;

  private int salary;

  /** Creates a new instance of ComplexEmployee */
  public ComplexEmployee(String name, int salary) {
    this.name = name;
    this.salary = salary;
  }

  public String getName() {
    return name;
  }

  public int getSalary() {
    return this.salary;
  }
}

public class ComplexSocketServer {

  public static void main(String args[]) throws Exception {
    ServerSocket servSocket;
    Socket fromClientSocket;
    int cTosPortNumber = 1777;
    String str;
    ComplexCompany comp;

    servSocket = new ServerSocket(cTosPortNumber);
    System.out.println("Waiting for a connection on " + cTosPortNumber);

    fromClientSocket = servSocket.accept();

    ObjectOutputStream oos = new ObjectOutputStream(fromClientSocket.getOutputStream());

    ObjectInputStream ois = new ObjectInputStream(fromClientSocket.getInputStream());

    while ((comp = (ComplexCompany) ois.readObject()) != null) {
      comp.printCompanyObject();

      oos.writeObject("bye bye");
      break;
    }
    oos.close();

    fromClientSocket.close();
  }
}





public class ComplexSocketClient {

  public static void main(String args[]) throws Exception {
    Socket socket1;
    int portNumber = 1777;
    String str = "";

    socket1 = new Socket(InetAddress.getLocalHost(), portNumber);

    ObjectInputStream ois = new ObjectInputStream(socket1.getInputStream());

    ObjectOutputStream oos = new ObjectOutputStream(socket1.getOutputStream());

    ComplexCompany comp = new ComplexCompany("A");
    ComplexEmployee emp0 = new ComplexEmployee("B", 1000);
    comp.addPresident(emp0);

    ComplexDepartment sales = new ComplexDepartment("C");
    ComplexEmployee emp1 = new ComplexEmployee("D", 1200);
    sales.addManager(emp1);
    comp.addDepartment(sales);

    ComplexDepartment accounting = new ComplexDepartment("E");
    ComplexEmployee emp2 = new ComplexEmployee("F", 1230);
    accounting.addManager(emp2);
    comp.addDepartment(accounting);

    ComplexDepartment maintenance = new ComplexDepartment("Maintenance");
    ComplexEmployee emp3 = new ComplexEmployee("Greg Hladlick", 1020);
    maintenance.addManager(emp3);
    comp.addDepartment(maintenance);

    oos.writeObject(comp);

    while ((str = (String) ois.readObject()) != null) {
      System.out.println(str);
      oos.writeObject("bye");

      if (str.equals("bye"))
        break;
    }

    ois.close();
    oos.close();
    socket1.close();
  }

}

0 comments:

                                                                

Site Meter