"Hai, Amigo!"

"Halo, Rishi!"

"Topik pelajaran hari ini adalah soket."

"Anda sudah tahu bahwa setiap komputer di jaringan memiliki alamat IP uniknya sendiri."

"Ya."

"Sekarang bayangkan Anda memiliki beberapa komputer, masing-masing menjalankan selusin program yang mengakses Internet: Skype, ICQ, dll."

"Dan program-program ini ingin berkomunikasi satu sama lain."

"Kita perlu menghentikan mereka agar tidak mengganggu satu sama lain. Kita perlu membuatnya agar Skype terhubung dengan Skype, Slack terhubung dengan Slack, dll."

"Ingat bagaimana masalah ini diselesaikan dengan URL dan server web?"

"Ya, kami menambahkan port."

"Tepat."

"Ini seperti membuat sekumpulan kamar kecil di sebuah rumah dan mengatakan bahwa rumah itu adalah gedung apartemen. Setiap pelabuhan seperti apartemen yang terpisah. "

"Jika alamat IP adalah pengidentifikasi unik untuk komputer, maka alamat IP yang digabungkan dengan port adalah pengidentifikasi unik untuk 'apartemen' tertentu di komputer, tempat program dapat berada. "

"Lokasi unik ini disebut soket ."

"Soket memiliki nomor uniknya sendiri yang terdiri dari alamat IP dan nomor port. "

"Ah. Dengan kata lain, soket adalah pengenal untuk beberapa lokasi komputer virtual tempat sebuah program berada? Dan program lain mengirim pesan ke lokasi ini, yang memungkinkan kedua program berkomunikasi?"

"Aku tidak tahu bagaimana kamu memahaminya, tapi itu memang benar."

"Akal sehatku memberitahuku."

"Bagus. Kalau begitu izinkan saya memberi Anda beberapa detail."

"Soket sebenarnya adalah cara paling dasar dan primitif bagi program untuk berkomunikasi."

"Java memiliki dua kelas untuk bekerja dengan soket. Mereka adalah Socket dan ServerSocket ."

" ServerSocket adalah kelas khusus yang objeknya mewakili server, yaitu mereka mengizinkan saya melayani permintaan yang tiba di soket tertentu."

" Kelas Socket sebenarnya adalah soket klien. Kami menggunakannya untuk mengirim pesan ke soket lain dan menerima tanggapannya."

"Berikut cara mengirim pesan ke soket:"

Contoh
// Create a socket
Socket clientSocket = new Socket("localhost", 4444);

// Get an OutputStream
OutputStream outputStream = clientSocket.getOutputStream();
PrintWriter out = new PrintWriter(outputStream, true);
out.println("Kiss my shiny metal ass!");
out.flush();

// Read the response
InputStream inputStream = clientSocket.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
String answer = in.readLine();

"Semuanya sangat mirip dengan mengunduh file dari Internet."

"Itu, Nak, karena soket juga digunakan di sana."

"Soket terletak di jantung segala sesuatu yang berhubungan dengan jaringan - yah, hampir semuanya."

"Anda dapat membaca informasi tambahan di sini "

"Terima kasih atas pelajarannya, Rishi."

"Aku belum selesai. Itu angan-angan."

"Sekarang kita akan menjelajahi cara kerja soket server."

"Ini sedikit lebih rumit."

Contoh
// Create a server socket object
ServerSocket serverSocket = new ServerSocket(4444); // Port

// Process incoming connections in a loop
while (true)
{
 // The accept method waits for someone to connect
 Socket socket = serverSocket.accept();

 // Read the response
 InputStream inputStream = socket.getInputStream();
 BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
 String message = in.readLine();

 // Create a response - we'll just reverse the string
 String reverseMessage = new StringBuilder(message).reverse().toString();

 // Send the response
 OutputStream outputStream = socket.getOutputStream();
 PrintWriter out = new PrintWriter(outputStream, true);
 out.println(reverseMessage);
 out.flush();
}

"Saya ingin menarik perhatian Anda ke beberapa poin."

"Poin 1: Untuk membuat soket (klien), Anda perlu menentukan alamat IP (atau nama domain) dan port. Untuk membuat soket server, Anda hanya perlu menentukan port. Soket server hanya ada di komputer tempat itu telah dibuat."

"Poin 2: Kelas ServerSocket memiliki metode accept() yang menunggu koneksi masuk. Dengan kata lain, metode ini akan berjalan selamanya hingga beberapa soket klien mencoba menyambung. Kemudian metode accept() menerima koneksi, membuat soket objek untuk mengizinkan komunikasi, dan kemudian mengembalikan objek ini."

"Dari sudut pandang programmer Java, soket adalah dua aliran: InputStream tempat Anda membaca pesan/data, dan OutputStream tempat Anda menulis pesan/data."

"Ketika Anda membuat soket server, Anda sebenarnya membuat port yang dapat dihubungkan dengan soket klien di komputer lain. Tetapi untuk melakukan ini, mereka harus menentukan dengan benar nomor port soket kami dan alamat IP komputer kami. Nah, atau nama domainnya."

"Ini contoh yang menarik untuk Anda. Anda dapat mencoba menggali dan menjalankannya:"

https://www.logicbig.com/tutorials/core-java-tutorial/http-server/http-server-basic.html

"Intinya adalah menggunakan soket server untuk menulis server web super primitif yang dapat Anda akses hanya dari browser."

"Wow! Server web? Keren! Saya akan mempelajarinya dengan sangat hati-hati."

"Terima kasih, Rishi."

"Itu saja, Amigo. Santai saja!"