Java NIO (Non-blocking I/O) dengan Server-Client Contoh – java.nio.ByteBuffer dan channels.Selector – Java NIO Vs. saya

Diterbitkan: 2021-08-06
Java NIO (I:O Non-blocking) dengan Contoh Server-Client - CrunchifyNIOServer.java

Java NIO adalah topik favorit saya. Saya telah bekerja dengan NIO sejak 2 tahun terakhir dan ingin berbagi Server-Client code sederhana untuk pembaca saya yang bebas menggunakan kode ini di lingkungan produksi mereka.

Mulai JDK 1.4, NIO dibuat untuk memungkinkan semua pemrogram Java mengimplementasikan input/output berkecepatan sangat tinggi tanpa harus berurusan dengan kode asli khusus. NIO menggunakan pustaka java.nio.buffer dibandingkan dengan I/O sederhana yang menguras dan mengisi kembali buffer secara internal sistem operasi apa pun.

Dalam tutorial ini kita akan membahas pustaka java.nio.channels dan java.nio.channels.Selector .

  • channels mewakili koneksi ke entitas yang mampu melakukan operasi I/O, seperti file dan soket; mendefinisikan pemilih , untuk operasi I/O multipleks dan non-pemblokiran.
  • selector dapat dibuat dengan menerapkan open method kelas ini, yang akan menggunakan penyedia pemilih default sistem untuk membuat pemilih baru.
penjelasan paket java.nio dengan detail API

Jika Anda memiliki below questions ini maka Anda berada di tempat yang tepat:

  • Bagaimana memulai dengan Java NIO
  • Apa itu tutorial Java NIO dan Java NIO
  • NIO Java asinkron
  • Apa kegunaan sebenarnya dari paket java nio?
  • Tutorial Java NIO
  • Bagaimana menerapkan I/O Berkinerja Tinggi dengan Java NIO

Mari kita mulai:

Langkah 1

  • Buat CrunchifyNIOServer.java yang membuka koneksi pada port 1111
  • gunakan isAcceptable() untuk memeriksa apakah saluran siap menerima koneksi soket baru
    • Jika ya – sambungkan
  • gunakan isReadable() untuk memeriksa apakah saluran siap dibaca
    • jika ya – baca dari buffer dan cetak di konsol Eclipse
  • Setelah Anda mendapatkan nama perusahaan terakhir "crunchify"
    • hubungan dekat

Langkah 2

  • Buat CrunchifyNIOClient.java yang mencoba terhubung ke server pada port 1111
  • Buat ArrayList dengan 5 nama perusahaan
  • Ulangi melalui ArrayList dan kirim setiap nama perusahaan ke server
  • Tutup koneksi setelah tugas selesai

Lihatlah Kode Java ini:

Kode Server – CrunchifyNIOServer.java


Kode Klien – CrunchifyNIOClient.java

Java NIO (I:O Non-blocking) dengan Contoh Server-Client - CrunchifyNIOClient.java

Hasil di Sisi Server:

Hasil di Sisi Klien:


Beberapa FAQ:

  1. Dari klien, bagaimana cara mempertahankan koneksi yang persisten?
    • Anda bisa menggunakan socket.setKeepAlive(true); untuk memiliki koneksi hidup dari sisi klien.
  2. Bagaimana cara membaca tanggapan atas pesan yang saya kirim ke server. Server terus menghasilkan pesan setiap 10 detik. Saya hanya perlu membaca tanggapan atas permintaan saya. Dari apa yang saya pahami, TCP "mengalirkan" data alih-alih catatan akhir, dll.
    • Untuk komunikasi server klien, protokol perlu didefinisikan dengan baik. panggilan readLine() akan diblokir sampai semua data dikembalikan, jadi jangan gunakan itu. Try reading bytes from the stream until -1 is returned.

Beri tahu saya jika itu berhasil.