Materi Socket TCP dan Contoh Program Bahasa Java



Assalamu'alaikum wr.wb....

hai temen-teman, apa kabar?  

kali ini aku bakalan menjelaskan tentang materi Socket TCP dimana disini nanti kita akan mencoba program client java bisa mengirimkan chat ke server.

Apa itu Soket?

Soket merupakan fasilitas IPC (Inter Proses Communication) untuk aplikasi jaringan. Agar suatu soket dapat berkomunikasi dengan soket lainnyanya, maka soket butuh diberi suatu alamat unik sebagai identifikasi. Alamat soket terdiri atas Alamat IP dan Nomer Port.

Macam-macam Komunikasi Soket  

Secara umum ada dua macam komunikasi dengan menggunakan soket, yaitu komunikasi stream dan komunikasi datagram. Komunikasi stream sering juga disebut dengan komunikasi yang berorientasi koneksi (Connection oriented communication). Sedangkan Komunikasi datagram disebut juga dengan komunikasi tak berkoneksi (connectionless communication). Protokol standar untuk komunikasi stream dikenal denga istilah TCP (Transmission Control Protocol), sedangkan standar protokol komunikasi datagram dikenal dengan UDP (User Datagram Protocol).

Pada UDP, setiap kali suatu paket data dikirim, informasi soket pengirim dan alamat soket tujuan turut dikirimkan. Hal demikian tidak dibutuhkan oleh TCP, karena TCP akan membuat setup koneksi dengan soket tujuan terlebih dulu. Setelah koneksi terbentuk, tidak dibutuhkan mengirimkan informasi soket pengirim tiap kali data dikirimkan. Ini karena proses tujuan akan mengidentifikasi setiap data yang tiba pada soket tujuan sebagai data dari proses pengirim. Koneksi yang terbentuk pada TCP bersifat dua arah (bidirectional).

Socket TCP pada Java

Java menyediakan obyek Socket dan ServerSocket untuk komunikasi soket TCP. ServerSocket digunakan pada sisi aplikasi server, sedangkan Socket digunakan baik pada sisi aplikasi server maupun client. Berikut adalah langkah-langkah membuat komunikasi socket di server: 

1. .Buatlah sebuah objek ServerSocket. 

Konstruktor ServerSocket memerlukan port number (1024-65535) sebagai argumen. 

contoh  untuk client: 

  • Socket link = new Socket(1234); 

Server akan menunggu koneksi dari client pada port 1234

contoh untuk server : 


Selain itu, pada server juga harus dibuat sebuah objek socket dari kelas ServerSocket untuk mendengar dan menerima koneksi dari client, sebagai berikut: 


2. Server dalam kondisi menunggu (listen). 

Operasi ini pada intinya menunggu permintaan koneksi dari sisi client.  

contoh : 

  • Socket link = servSock.accept(); 


3. Buat input dan output stream. 

Stream ini digunakan untuk berkomunikasi dengan client. Objek InputStreamReader digunakan untuk menerima respon dari client. Sedangkan PrintWriter untuk mengirimkan data ke client.

contoh untuk input : 


contoh untuk output : 


  • BufferedReader in = new BufferedReader(new InputStreamReader(link.getInputStream()));
  •  PrintWriter out = new PrintWriter(link.getOutputStream(),true);


4. Saling berkirim dan menerima pesan. 

Gunakan method readLine() untuk menerima data dan method println() untuk mengirim data.

contoh untuk menerima data : 

contoh untuk mengirim data : 



  • out.println("Message " + numMessages + ":" + message); 
  • message = in.readLine();


5. Menutup socket 

contoh : 

  • Link.close(); 

CONTOH PROGRAM JAVA 

program server :

import java.io.*;
import java.net.*;
public class ChatServer{
private static ServerSocket servSock;
private static final int PORT = 1234 ;
public static void main(String args[]){
 System.out.println("Opening Port.....\n");
try{
 servSock = new ServerSocket(PORT);
 }catch(IOException e){
 System.out.println("Unable to attach to port");
 System.exit(1);
 }
 do{
 run();
 }while(true);
}
private static void run(){
 Socket link = null ;
 try{
 link = servSock.accept();
 BufferedReader in = new BufferedReader(new
 InputStreamReader(link.getInputStream()));
 PrintWriter out = new PrintWriter(link.getOutputStream(),true);
 int numMessages=0;
 String message=in.readLine();
 while(!message.equals("close")){
 System.out.println("Message received");
 numMessages++;
 out.println("Message " + numMessages + ":" + message);
 message = in.readLine();
 }
 out.println(numMessages + " message received.");
 }catch(IOException e){
 e.printStackTrace();
 }
 finally{
 try{
 System.out.println("*********Closing Connection****");
 link.close();
 }
 catch(IOException e){
 System.out.println("Unable to disconnect");
 System.exit(1);
}
}
}
}

program client : 

import java.io.*;
import java.net.*;
public class ChatClient{
private static String strHost ;
private static InetAddress host ;
private static final int PORT = 1234;
public static void main(String args[]){
try{
 host = InetAddress.getLocalHost();
}catch(UnknownHostException e){
    System.out.println("Host ID Not Found");
 System.exit(1);
}
 run();
}
private static void run(){
 Socket link = null ;
try{
 link = new Socket(host, PORT);
 BufferedReader in = new BufferedReader(new
 InputStreamReader(link.getInputStream()));
 PrintWriter out = new PrintWriter(link.getOutputStream(),true);
 BufferedReader userEntry = new BufferedReader(new
 InputStreamReader(System.in));
 String message, response ;
 do{
 System.out.print("Enter message : ");
 message = userEntry.readLine();
 out.println(message);
 response = in.readLine();
 System.out.println("SERVER " + response);
 }while(!message.equals("close"));
}catch(IOException e){
 e.printStackTrace();
}
finally{
 try{
 System.out.println("closing connection");
 link.close();
 }
 catch(IOException e){
 System.out.println("Unable to disconnect!");
 System.exit(1);
 }
}
}
}

link video youtube : 

link Source Code: https://github.com/MulyaSafitri15/Networking_Programing/tree/main/Modul2



Komentar