java
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 −
TCP TCP adalah singkatan dari Transmission Control Protocol, yang memungkinkan komunikasi yang andal antara dua aplikasi. TCP biasanya digunakan melalui Protokol Internet, yang disebut sebagai TCP/IP.
UDP UDP adalah singkatan dari User Datagram Protocol, protokol tanpa koneksi yang memungkinkan paket data ditransmisikan antar aplikasi.
Bab ini memberikan pemahaman yang baik tentang dua mata pelajaran berikut
Pemrograman Soket Ini adalah konsep yang paling banyak digunakan dalam Jaringan dan telah dijelaskan dengan sangat rinci.
Pemrosesan URL Ini akan dibahas secara terpisah. Klik di sini untuk mempelajari tentang Pemrosesan URL dalam bahasa Java.
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
Server membuat instance objek ServerSocket, yang menunjukkan di mana komunikasi nomor port akan terjadi.
Server memanggil metode accept() dari kelas ServerSocket. Metode ini menunggu hingga klien terhubung ke server pada port yang diberikan.
Setelah server menunggu, klien membuat instance objek Socket, menentukan nama server dan nomor port yang akan disambungkan.
Konstruktor kelas Socket mencoba untuk menghubungkan klien ke server tertentu dan nomor port. Jika komunikasi terjalin, klien sekarang memiliki objek Socket yang mampu berkomunikasi dengan server.
Di sisi server, metode accept() mengembalikan referensi ke soket baru di server yang terhubung ke soket klien.
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.
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.
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. |
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. |
GreetingClient berikut adalah program klien yang terhubung ke server dengan menggunakan soket dan mengirim salam, lalu menunggu respons.
// 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(); } } }
Program GreetingServer berikut adalah contoh aplikasi server yang menggunakan kelas Socket untuk mendengarkan klien pada nomor port yang ditentukan oleh argumen baris perintah −
// 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
$ 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
Antarmuka Antrian Java Dalam tutorial ini, kita akan belajar tentang antarmuka Java Queue dan metodenya. Queue antarmuka kerangka koleksi Java menyediakan fungsionalitas struktur data antrian. Ini memperluas Collection antarmuka. Kelas yang Menerapkan Antrian Sejak Queue adalah antarmuka, kami t
Antarmuka Deque Java Dalam tutorial ini, kita akan belajar tentang antarmuka Deque, cara menggunakannya, dan metodenya. Deque antarmuka kerangka koleksi Java menyediakan fungsionalitas antrian berujung ganda. Ini memperluas Queue antarmuka. Kerja Deque Dalam antrian biasa, elemen ditambahkan dar
Java LinkedList Dalam tutorial ini, kita akan belajar tentang Java LinkedList secara detail dengan bantuan contoh. LinkedList kelas kerangka koleksi Java menyediakan fungsionalitas struktur data daftar tertaut (daftar tertaut ganda). Setiap elemen dalam daftar tertaut dikenal sebagai simpul . In
Java ArrayDeque Dalam tutorial ini, kita akan belajar tentang kelas ArrayDeque dan metodenya dengan bantuan contoh. Selain itu, kita akan belajar menggunakan deque array untuk mengimplementasikan tumpukan. Di Java, kita bisa menggunakan ArrayDeque class untuk mengimplementasikan struktur data antr