"Hai, Amigo!"

"Hello, Rishi!"

"Topik pelajaran hari ini ialah soket."

"Anda sudah tahu bahawa setiap komputer di rangkaian mempunyai alamat IP uniknya sendiri."

"Ya."

"Sekarang bayangkan anda mempunyai beberapa komputer, masing-masing menjalankan sedozen program yang mengakses Internet: Skype, ICQ, dll."

"Dan program ini mahu berkomunikasi antara satu sama lain."

"Kita perlu menghalang mereka daripada campur tangan antara satu sama lain. Kita perlu menjadikannya supaya Skype berhubung dengan Skype, Slack menyambung dengan Slack, dsb."

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

"Ya, kami menambah pelabuhan."

"Tepat sekali."

"Ia sama seperti membuat sekumpulan bilik kecil di dalam rumah dan mengatakan bahawa rumah itu adalah bangunan pangsapuri. Setiap pelabuhan adalah seperti pangsapuri yang berasingan. "

"Jika alamat IP ialah pengecam unik untuk komputer, maka alamat IP yang digabungkan dengan port ialah pengecam unik untuk 'apartmen' tertentu dalam komputer, di mana program boleh berada. "

"Lokasi unik ini dipanggil soket ."

"Soket mempunyai nombor uniknya sendiri yang terdiri daripada alamat IP dan nombor port. "

"Ah. Dalam erti kata lain, soket ialah pengecam untuk beberapa lokasi komputer maya di mana program boleh berada? Dan program lain menghantar mesej ke lokasi ini, yang membolehkan kedua-dua program berkomunikasi?"

"Saya tidak tahu bagaimana anda memahaminya, tetapi itu betul-betul betul."

"Robo-sense saya memberitahu saya."

"Bagus. Kalau begitu biar saya beri sedikit butiran."

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

"Java mempunyai dua kelas untuk bekerja dengan soket. Ia adalah Socket dan ServerSocket ."

" ServerSocket ialah kelas khas yang objeknya mewakili pelayan, iaitu mereka membenarkan saya permintaan perkhidmatan yang tiba pada soket tertentu."

" Kelas Socket sebenarnya ialah soket pelanggan. Kami menggunakannya untuk menghantar mesej ke soket lain dan menerima respons."

"Berikut ialah cara menghantar mesej 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 hampir sama dengan memuat turun fail dari Internet."

"Itu, anakku, kerana soket digunakan di sana juga."

"Soket terletak di tengah-tengah semua yang berkaitan dengan rangkaian - baik, hampir semuanya."

"Anda boleh membaca maklumat tambahan di sini "

"Terima kasih untuk pelajaran, Rishi."

"Saya belum habis lagi. Itu angan-angan."

"Sekarang kita akan meneroka cara soket pelayan berfungsi."

"Ia 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 kepada beberapa perkara."

"Titik 1: Untuk mencipta soket (pelanggan), anda perlu menentukan alamat IP (atau nama domain) dan port. Untuk mencipta soket pelayan, anda hanya perlu menentukan port. Soket pelayan hanya wujud pada komputer di mana ia dicipta."

"Titik 2: Kelas ServerSocket mempunyai kaedah accept() yang menunggu sambungan masuk. Dalam erti kata lain, kaedah tersebut akan berjalan selama-lamanya sehingga sesetengah soket klien cuba menyambung. Kemudian kaedah accept() menerima sambungan, mencipta soket objek untuk membenarkan komunikasi, dan kemudian mengembalikan objek ini."

"Dari sudut pandangan pengaturcara Java, soket ialah dua aliran: InputStream dari mana anda membaca mesej/data dan OutputStream yang anda tulis mesej/data."

"Apabila anda mencipta soket pelayan, anda sebenarnya membuat port yang boleh disambungkan oleh soket pelanggan pada komputer lain. Tetapi untuk melakukan ini, mereka mesti menyatakan dengan betul nombor port soket kami dan alamat IP komputer kami. Nah, atau nama domainnya."

"Berikut ialah contoh yang menarik untuk anda. Anda boleh cuba menggali dan menjalankannya:"

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

"Intinya ialah menggunakan soket pelayan untuk menulis pelayan web super primitif yang boleh anda akses hanya dari penyemak imbas."

"Wah! Pelayan web? Sejuk! Saya akan mengkajinya dengan teliti."

"Terima kasih, Rishi."

"Itu sahaja, Amigo. Pergi berehat!"