Network Programming Object Communication (NPOC)

Instructional Objectives

After participating in this practicum, students are expected to be able to:

  1. Understanding how objects communicate through streams.
  2. Understand how objects communicate through sockets.

1. Object Communication

Through Stream In socket programming, generally the data sent is in the form of stream data. Stream also allows to send objects through a mechanism called object serialization. Object serialization is a technique that allows a program to save the state of an object to a file, then read back from the file to memory or sent over the network.

Staff.java

import java.io.*;

public class Staff implements Serializable{
    String nama;
    String divisi;
    int umur;
    public Staff(String nama, String divisi, int umur) {
        this.nama=nama;
        this.divisi=divisi;
        this.umur= umur;
    } 
    
    public void print() {
        System.out.println("Data Staff: ");
        System.out.println("Nama : " + nama);
        System.out.println("Divisi : " + divisi);
        System.out.println("Umur : "+ umur);
    } 
 
 }

ObjectClient.java

import java.net.*;
import java.io.*;
    public class ObjectClient{
        private static int SRV_PORT = 5000;
        private static ObjectOutputStream os=null;

        public static void main(String argv[]) throws Exception{

        try{
            Socket soketClient= new Socket("127.0.0.1", SRV_PORT);
            os= new ObjectOutputStream(soketClient.getOutputStream());
            Staff pegawai= new Staff("Steve","IT",24);
            os.writeObject(pegawai);
            System.out.println("Client mengirim data pegawai:");
            pegawai.print();
            } catch(Exception e){
                e.printStackTrace();
            } 
        } 
} 

ObjectServer.java

import java.net.*;
import java.io.*;

    public class ObjectServer {
    private static int SRV_PORT=5000;
    private static ObjectInputStream is=null;
    
    public static void main(String argv[]) throws Exception{
        ServerSocket soketServer= new ServerSocket(SRV_PORT);
        Socket soketClient= soketServer.accept();
        is= new ObjectInputStream(soketClient.getInputStream());
        Staff pegawai= (Staff) is.readObject();
        System.out.println("Server menerima data Pegawai");
        pegawai.print();
    } 
}

2. Object Communication

Through Stream An object of a class that implements the serializable or externalizable interface can be serialized through a socket because ServerSocket and Socket also support streams. Thus an object can also be sent and received through the socket mechanism.

EmployeeEx.java

import java.io.*;

 public class PegawaiEx implements Externalizable {
    private String nama;
    private int umur;
    private int gaji;
    
    public PegawaiEx() {

    } 
    
    public PegawaiEx(String nama, int umur, int gaji) {
        this.nama = nama;
        this.umur = umur;
        this.gaji = gaji;
    } 
    
    public void writeExternal(ObjectOutput objout) throws IOException {
        objout.writeObject("Nama : " + this.nama);
        objout.writeInt(this.umur);
        objout.writeInt(this.gaji);
    } 
    
    public void readExternal(ObjectInput objin) throws IOException, ClassNotFoundException {
        this.nama = (String) objin.readObject();
        this.umur = objin.readInt();
        this.gaji = objin.readInt();
    } 
    
    public String toString()

    {

    return "Data untuk " + this.nama + "\n" + this.umur + "\n" + this.gaji;
    } 
 
 } 

EmployeeClient.java

import java.io.*;
import java.net.*;

 public class PegawaiClient {

    public static void main(String[] args) {
        Socket soc = null;
        PegawaiEx pegawaiInput = null;

    try {
        soc = new Socket("localhost", 4545);
        ObjectInput ois = new ObjectInputStream(soc.getInputStream());
        ObjectOutput ous = new ObjectOutputStream(soc.getOutputStream());
        pegawaiInput = new PegawaiEx("Client", 10,150);
        ous.writeObject(pegawaiInput);
        ous.flush();
        String s = (String) ois.readObject();
        System.out.println(s);
        ous.close();
        ois.close();
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println(e.getMessage());
    } 
    
    } 
    
}

EmployeeServer.java

import java.io.*;
import java.net.*;

public class PegawaiServer {
  
  public static void main(String[] args)  {
    ServerSocket ser = null;
    Socket soc = null;
    PegawaiEx pegawaiInput = null;
    
    try {
        ser = new ServerSocket(4545);
        System.out.println("Server siap");
        soc = ser.accept();
        ObjectInput ois = new ObjectInputStream(soc.getInputStream());
        ObjectOutput ous = new ObjectOutputStream(soc.getOutputStream());
        pegawaiInput = (PegawaiEx) ois.readObject();
        System.out.println("Hasil Kiriman Client");
        System.out.println(pegawaiInput);
        String res = new String ("Data Pegawai telah diterima");
        ous.writeObject(res);
        ous.flush();

Post a Comment

Previous Next

نموذج الاتصال