Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Menguasai Jaringan Java: Bangun Aplikasi Jaringan Kuat dengan java.net

Istilah pemrograman jaringan merujuk pada menulis program yang dieksekusi di berbagai perangkat (komputer), di mana perangkat tersebut semua terhubung satu sama lain menggunakan jaringan.

Paket java.net dari J2SE APIs berisi kumpulan kelas dan antarmuka yang menyediakan detail komunikasi tingkat rendah, memungkinkan Anda untuk menulis program yang berfokus pada penyelesaian masalah yang dihadapi.

Paket java.net memberikan dukungan untuk dua protokol jaringan umum:

Bab ini memberikan pemahaman yang baik tentang dua subjek berikut:

Pemrograman Soket

Soket menyediakan mekanisme komunikasi antara dua komputer menggunakan TCP. Program klien membuat soket di ujung komunikasi dan mencoba menghubungkan soket tersebut ke server.

Ketika koneksi dibuat, server membuat objek soket di ujung komunikasi. Klien dan server sekarang dapat berkomunikasi dengan menulis ke dan membaca dari soket.

Kelas java.net.Socket mewakili soket, dan kelas java.net.ServerSocket menyediakan mekanisme untuk program server untuk mendengarkan klien dan membangun koneksi dengan mereka.

Berikut langkah-langkah yang terjadi saat membangun koneksi TCP antara dua komputer menggunakan soket:

Setelah koneksi terbentuk, komunikasi dapat terjadi menggunakan aliran I/O. Setiap soket memiliki OutputStream dan InputStream. OutputStream klien terhubung ke InputStream server, dan InputStream klien terhubung ke OutputStream server.

TCP adalah protokol komunikasi dua arah, oleh karena itu data dapat dikirim melalui kedua aliran secara bersamaan. Berikut adalah kelas yang berguna yang menyediakan serangkaian metode lengkap untuk mengimplementasikan soket.

Metode Kelas ServerSocket

Kelas java.net.ServerSocket digunakan oleh aplikasi server untuk mendapatkan port dan mendengarkan permintaan klien.

Kelas ServerSocket memiliki empat konstruktor:

Sr.No. Metode & Deskripsi
1

public ServerSocket(int port) throws IOException

Mencoba membuat server socket yang terikat ke port yang ditentukan. Pengecualian terjadi jika port sudah terikat oleh aplikasi lain.

2

public ServerSocket(int port, int backlog) throws IOException

Mirip dengan konstruktor sebelumnya, parameter backlog menentukan berapa banyak klien masuk yang akan disimpan dalam antrean tunggu.

3

public ServerSocket(int port, int backlog, InetAddress address) throws IOException

Mirip dengan konstruktor sebelumnya, parameter InetAddress menentukan alamat IP lokal yang akan terikat. InetAddress digunakan untuk server yang mungkin memiliki beberapa alamat IP, memungkinkan server untuk menentukan alamat IP mana yang akan menerima permintaan klien.

4

public ServerSocket() throws IOException

Membuat server socket yang tidak terikat. Saat menggunakan konstruktor ini, gunakan metode bind() saat Anda siap untuk mengikat server socket.

Jika konstruktor ServerSocket tidak melempar pengecualian, berarti aplikasi Anda telah berhasil terikat ke port yang ditentukan dan siap untuk permintaan klien.

Berikut adalah beberapa metode umum dari kelas ServerSocket:

Sr.No. Metode & Deskripsi
1

public int getLocalPort()

Mengembalikan port yang sedang didengarkan oleh server socket. Metode ini berguna jika Anda melewatkan 0 sebagai nomor port dalam konstruktor dan membiarkan server menemukan port untuk Anda.

2

public Socket accept() throws IOException

Menunggu klien masuk. Metode ini memblokir sampai klien terhubung ke server pada port yang ditentukan atau soket timeout, dengan asumsi nilai timeout telah diatur menggunakan metode setSoTimeout(). Jika tidak, metode ini memblokir selamanya.

3

public void setSoTimeout(int timeout)

Mengatur nilai timeout untuk berapa lama server socket menunggu klien selama accept().

4

public void bind(SocketAddress host, int backlog)

Mengikat soket ke server dan port yang ditentukan dalam objek SocketAddress. Gunakan metode ini jika Anda telah membuat ServerSocket menggunakan konstruktor tanpa argumen.

Ketika ServerSocket memanggil accept(), metode tidak akan kembali sampai klien terhubung. Setelah klien terhubung, ServerSocket membuat Socket baru pada port yang tidak ditentukan dan mengembalikan referensi ke Socket baru ini. Koneksi TCP sekarang ada antara klien dan server, dan komunikasi dapat dimulai.

Metode Kelas Socket

Kelas java.net.Socket mewakili soket yang digunakan baik klien maupun server untuk berkomunikasi satu sama lain. Klien mendapatkan objek Socket dengan membuat instance, sedangkan server mendapatkan objek Socket dari nilai kembalian metode accept().

Kelas Socket memiliki lima konstruktor yang digunakan klien untuk terhubung ke server:

Sr.No. Metode & Deskripsi
1

public Socket(String host, int port) throws UnknownHostException, IOException.

Metode ini mencoba terhubung ke server yang ditentukan pada port yang ditentukan. Jika konstruktor ini tidak melempar pengecualian, koneksi berhasil dan klien terhubung ke server.

2

public Socket(InetAddress host, int port) throws IOException

Metode ini identik dengan konstruktor sebelumnya, kecuali host ditunjukkan oleh objek InetAddress.

3

public Socket(String host, int port, InetAddress localAddress, int localPort) throws IOException.

Terhubung ke host dan port yang ditentukan, membuat soket di host lokal pada alamat dan port yang ditentukan.

4

public Socket(InetAddress host, int port, InetAddress localAddress, int localPort) throws IOException.

Metode ini identik dengan konstruktor sebelumnya, kecuali host ditunjukkan oleh objek InetAddress alih-alih String.

5

public Socket()

Membuat soket yang tidak terhubung. Gunakan metode connect() untuk menghubungkan soket ini ke server.

Ketika konstruktor Socket kembali, tidak hanya membuat objek Socket tetapi sebenarnya mencoba terhubung ke server dan port yang ditentukan.

Beberapa metode yang menarik dalam kelas Socket tercantum di sini. Perhatikan bahwa baik klien maupun server memiliki objek Socket, sehingga metode ini dapat dipanggil baik oleh klien maupun server.

Sr.No. Metode & Deskripsi
1

public void connect(SocketAddress host, int timeout) throws IOException

Metode ini menghubungkan soket ke host yang ditentukan. Metode ini hanya diperlukan saat Anda membuat Socket menggunakan konstruktor tanpa argumen.

2

public InetAddress getInetAddress()

Metode ini mengembalikan alamat komputer lain yang terhubung dengan soket ini.

3

public int getPort()

Mengembalikan port yang diikat soket pada mesin jarak jauh.

4

public int getLocalPort()

Mengembalikan port yang diikat soket pada mesin lokal.

5

public SocketAddress getRemoteSocketAddress()

Mengembalikan alamat soket jarak jauh.

6

public InputStream getInputStream() throws IOException

Mengembalikan aliran input dari soket. Aliran input terhubung ke aliran output soket jarak jauh.

7

public OutputStream getOutputStream() throws IOException

Mengembalikan aliran output dari soket. Aliran output terhubung ke aliran input soket jarak jauh.

8

public void close() throws IOException

Menutup soket, yang membuat objek Socket ini tidak lagi mampu terhubung kembali ke server apa pun.

Metode Kelas InetAddress

Kelas ini mewakili alamat Protokol Internet (IP). Berikut adalah beberapa metode berguna yang Anda butuhkan saat melakukan pemrograman soket:

Sr.No. Metode & Deskripsi
1

static InetAddress getByAddress(byte[] addr)

Mengembalikan objek InetAddress yang diberikan alamat IP mentah.

2

static InetAddress getByAddress(String host, byte[] addr)

Membuat InetAddress berdasarkan nama host dan alamat IP yang diberikan.

3

static InetAddress getByName(String host)

Menentukan alamat IP host, diberikan nama host.

4

String getHostAddress()

Mengembalikan string alamat IP dalam presentasi teks.

5

String getHostName()

Mendapatkan nama host untuk alamat IP ini.

6

static InetAddress InetAddress getLocalHost()

Mengembalikan host lokal.

7

String toString()

Mengonversi alamat IP ini ke String.

Contoh Soket Klien

GreetingClient berikut adalah program klien yang terhubung ke server menggunakan soket dan mengirimkan salam, lalu menunggu respons.

Contoh

 // File Name GreetingClient.java import java.net.*; import java.io.*; public class GreetingClient { public static void main(String [] args) { String serverName = args[0]; int port = Integer.parseInt(args[1]); try { System.out.println("Menghubungkan ke " + serverName + " pada port " + port); Socket client = new Socket(serverName, port); System.out.println("Baru terhubung ke " + client.getRemoteSocketAddress()); OutputStream outToServer = client.getOutputStream(); DataOutputStream out = new DataOutputStream(outToServer); out.writeUTF("Hello from " + client.getLocalSocketAddress()); InputStream inFromServer = client.getInputStream(); DataInputStream in = new DataInputStream(inFromServer); System.out.println("Server says " + in.readUTF()); client.close(); } catch (IOException e) { e.printStackTrace(); } } } 

Contoh Soket Server

Program GreetingServer berikut adalah contoh aplikasi server yang menggunakan kelas Socket untuk mendengarkan klien pada nomor port yang ditentukan oleh argumen baris perintah:

Contoh

 // File Name GreetingServer.java import java.net.*; import java.io.*; public class GreetingServer extends Thread { private ServerSocket serverSocket; public GreetingServer(int port) throws IOException { serverSocket = new ServerSocket(port); serverSocket.setSoTimeout(10000); } public void run() { while(true) { try { System.out.println("Menunggu klien pada port " + serverSocket.getLocalPort() + "..."); Socket server = serverSocket.accept(); System.out.println("Baru terhubung ke " + server.getRemoteSocketAddress()); DataInputStream in = new DataInputStream(server.getInputStream()); System.out.println(in.readUTF()); DataOutputStream out = new DataOutputStream(server.getOutputStream()); out.writeUTF("Thank you for connecting to " + server.getLocalSocketAddress() + "\nGoodbye!"); server.close(); } catch (SocketTimeoutException s) { System.out.println("Socket timed out!"); break; } catch (IOException e) { e.printStackTrace(); break; } } } public static void main(String [] args) { int port = Integer.parseInt(args[0]); try { Thread t = new GreetingServer(port); t.start(); } catch (IOException e) { e.printStackTrace(); } } } 

Kompilasi klien dan server lalu jalankan server seperti berikut:

 $ java GreetingServer 6066 Menunggu klien pada port 6066... 

Periksa program klien seperti berikut:

Keluaran

 $ java GreetingClient localhost 6066 Connecting to localhost on port 6066 Just connected to localhost/127.0.0.1:6066 Server says Thank you for connecting to /127.0.0.1:6066 Goodbye! 

java

  1. Menguasai Operator Java: Tipe, Sintaks, & Contoh Praktis
  2. Komentar Java: Tipe, Penggunaan, dan Best Practices
  3. Menguasai Java Enhanced For Loop: Sintaks, Contoh, dan Best Practices
  4. Menguasai String Java: Pembuatan, Metode, dan Best Practices
  5. Menguasai Antarmuka Java: Konsep, Implementasi, dan Praktik Terbaik
  6. Menguasai Kelas Dalam Anonim Java: Definisi, Sintaks, dan Contoh Praktis
  7. Menguasai Java Try-with-Resources: Manajemen Sumber Daya Otomatis Dijelaskan
  8. Anotasi Java Dijelaskan: Jenis, Penempatan, dan Contoh Praktis
  9. Pernyataan Java: Panduan Praktis untuk Mendeteksi Bug dan Memastikan Keandalan Kode
  10. Memahami Java Vector: Penggunaan, Fitur, dan Perbandingan dengan ArrayList