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

Jawa - Jaringan

Istilah pemrograman jaringan mengacu pada penulisan program yang dijalankan di beberapa perangkat (komputer), di mana semua perangkat terhubung satu sama lain menggunakan jaringan.

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

Paket java.net menyediakan dukungan untuk dua protokol jaringan umum −

Bab ini memberikan pemahaman yang baik tentang dua mata pelajaran berikut

Pemrograman Soket

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

Saat koneksi dibuat, server membuat objek soket di ujung komunikasinya. Klien dan server sekarang dapat berkomunikasi dengan menulis dan membaca dari soket.

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

Langkah-langkah berikut terjadi saat membuat koneksi TCP antara dua komputer menggunakan soket

Setelah koneksi dibuat, 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, sehingga data dapat dikirim melalui kedua aliran secara bersamaan. Berikut adalah kelas-kelas berguna yang menyediakan kumpulan metode lengkap untuk mengimplementasikan soket.

Metode Kelas ServerSocket

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

Kelas ServerSocket memiliki empat konstruktor −

No.Pr. Metode &Deskripsi
1

ServerSocket publik(port int) melempar IOException

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

2

ServerSocket publik(port int, int backlog) melempar IOException

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

3

ServerSocket publik(port int, int backlog, alamat InetAddress) melempar IOException

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

4

ServerSocket() publik melempar IOException

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

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

Berikut adalah beberapa metode umum dari kelas ServerSocket

No.Pr. Metode &Deskripsi
1

publik int getLocalPort()

Mengembalikan port tempat soket server mendengarkan. Metode ini berguna jika Anda memasukkan 0 sebagai nomor port dalam konstruktor dan membiarkan server menemukan port untuk Anda.

2

publik Socket accept() melempar IOException

Menunggu klien masuk. Metode ini memblokir hingga klien terhubung ke server pada port yang ditentukan atau waktu soket habis, dengan asumsi bahwa nilai batas waktu telah ditetapkan menggunakan metode setSoTimeout(). Jika tidak, metode ini memblokir tanpa batas.

3

public void setSoTimeout(int timeout)

Menyetel nilai batas waktu untuk berapa lama soket server menunggu klien selama accept().

4

public void bind (host SocketAddress, int backlog)

Mengikat soket ke server dan port tertentu di objek SocketAddress. Gunakan metode ini jika Anda telah membuat instance ServerSocket menggunakan konstruktor tanpa argumen.

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

Metode Kelas Soket

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

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

No.Pr. Metode &Deskripsi
1

Soket publik(String host, port int) melempar UnknownHostException, IOException.

Metode ini mencoba untuk menyambung ke server yang ditentukan di port yang ditentukan. Jika konstruktor ini tidak mengeluarkan pengecualian, koneksi berhasil dan klien terhubung ke server.

2

Soket publik (host InetAddress, port int) melempar IOException

Metode ini identik dengan konstruktor sebelumnya, kecuali bahwa host dilambangkan dengan objek InetAddress.

3

Soket publik(String host, int port, InetAddress localAddress, int localPort) melempar IOException.

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

4

Soket publik (host InetAddress, port int, InetAddress localAddress, int localPort) melempar IOException.

Metode ini identik dengan konstruktor sebelumnya, kecuali bahwa host dilambangkan dengan objek InetAddress, bukan String.

5

Soket publik()

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

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

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

No.Pr. Metode &Deskripsi
1

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

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

2

InetAddress publik getInetAddress()

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

3

publik int getPort()

Mengembalikan port tempat soket terikat pada mesin jarak jauh.

4

publik int getLocalPort()

Mengembalikan port tempat soket terikat pada mesin lokal.

5

SoketAddress publik getRemoteSocketAddress()

Mengembalikan alamat soket jarak jauh.

6

Publik InputStream getInputStream() melempar IOException

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

7

Publik OutputStream getOutputStream() melempar IOException

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

8

public void close() melempar IOException

Menutup soket, yang membuat objek Soket ini tidak lagi dapat terhubung lagi ke server mana pun.

Metode Kelas InetAddress

Kelas ini mewakili alamat Internet Protocol (IP). Berikut adalah metode berguna berikut yang Anda perlukan saat melakukan pemrograman soket −

No.Pr. 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

statis InetAddress getByName(String host)

Menentukan alamat IP sebuah host, berdasarkan nama host tersebut.

4

String getHostAddress()

Mengembalikan string alamat IP dalam presentasi tekstual.

5

String getHostName()

Mendapatkan nama host untuk alamat IP ini.

6

InetAddress statis InetAddress getLocalHost()

Mengembalikan host lokal.

7

String toString()

Mengonversi alamat IP ini menjadi String.

Contoh Klien Soket

GreetingClient berikut adalah program klien yang terhubung ke server dengan menggunakan soket dan mengirim 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("Connecting to " + serverName + " on port " + port);
         Socket client = new Socket(serverName, port);
         
         System.out.println("Just connected to " + 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 Server Soket

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("Waiting for client on port " + 
               serverSocket.getLocalPort() + "...");
            Socket server = serverSocket.accept();
            
            System.out.println("Just connected to " + 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 dan kemudian mulai server sebagai berikut

$ java GreetingServer 6066
Waiting for client on port 6066...

Periksa program klien sebagai 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. Operator Jawa
  2. Komentar Jawa
  3. Java untuk setiap Loop
  4. String Jawa
  5. Antarmuka Jawa
  6. Kelas Anonim Java
  7. Java mencoba-dengan-sumber daya
  8. Anotasi Jawa
  9. Pernyataan Jawa
  10. Vektor Jawa