Mega Code Archive

 
Categories / Java / Network Protocol
 

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();   } }