Sunucu-İstemci Örneği ile Java NIO (Engellemeyen G/Ç) – java.nio.ByteBuffer ve channel.Selector – Java NIO Vs. GÇ

Yayınlanan: 2021-08-06
Sunucu-İstemci Örneği ile Java NIO (Engellemeyen G: O) - CrunchifyNIOServer.java

Java NIO benim en sevdiğim konudur. Son 2 yıldan beri NIO ile çalışıyorum ve bu kodu üretim ortamlarında kullanmakta özgür olan okuyucularım için basit Server-Client code paylaşmak istiyorum.

JDK 1.4'ten başlayarak, tüm Java programcılarının özel yerel kodla uğraşmak zorunda kalmadan çok yüksek hızlı giriş/çıkış uygulamalarına izin vermek için NIO oluşturuldu. NIO, herhangi bir işletim sisteminde dahili olarak arabelleği boşaltan ve geri dolduran basit G/Ç'ye kıyasla java.nio.buffer kitaplığını kullanır.

Bu derste java.nio.channels ve java.nio.channels.Selector kitaplıklarını inceleyeceğiz.

  • channels , dosyalar ve yuvalar gibi G/Ç işlemlerini gerçekleştirebilen varlıklara bağlantıları temsil eder; çoğullanmış, engellemeyen G/Ç işlemleri için seçicileri tanımlar .
  • selector , yeni bir seçici oluşturmak için sistemin varsayılan seçici sağlayıcısını kullanacak olan bu sınıfın open method çağrılarak oluşturulabilir.
API ayrıntıları ile java.nio paketi açıklaması

below questions varsa doğru yerdesiniz:

  • Java NIO'ya nasıl başlanır
  • Java NIO ve Java NIO öğreticileri nedir
  • Eşzamansız Java NIO
  • Java nio paketinin tam kullanımı nedir
  • Java NIO Eğitimi
  • Java NIO ile Yüksek Performanslı G/Ç nasıl uygulanır

Başlayalım:

Aşama 1

  • port 1111 bağlantıyı açan CrunchifyNIOServer.java oluşturun
  • kanalın yeni bir soket bağlantısını kabul etmeye hazır olup olmadığını kontrol etmek için isAcceptable() kullanın
    • Evet ise - bağlayın
  • kanalın okumaya hazır olup olmadığını kontrol etmek için isReadable() kullanın
    • evet ise - arabellekten okuyun ve Eclipse konsolunda yazdırın
  • Son şirket adını aldığınızda "crunchify"
    • yakın bağlantı

Adım 2

  • port 1111 sunucuya bağlanmaya çalışan CrunchifyNIOClient.java oluşturun
  • 5 şirket adıyla ArrayList oluşturun
  • ArrayList aracılığıyla yineleyin ve her bir şirket Adını sunucuya gönderin
  • Görev bittikten sonra bağlantıyı kapat

Bu Java Koduna bir göz atın:

Sunucu Kodu – CrunchifyNIOServer.java


İstemci Kodu – CrunchifyNIOClient.java

Sunucu-İstemci Örneği ile Java NIO (Engellemeyen G: O) - CrunchifyNIOClient.java

Sunucu Tarafında Sonuç:

İstemci Tarafında Sonuç:


Birkaç SSS:

  1. İstemciden kalıcı bir bağlantıyı nasıl sürdürebilirim?
    • socket.setKeepAlive(true); istemci tarafından canlı bağlantılara sahip olmak.
  2. Sunucuya gönderdiğim mesaja bir yanıtı nasıl okurum. Sunucu her 10 saniyede bir mesaj üretmeye devam ediyor. Sadece isteğime verilen yanıtı okumam gerekiyor. Anladığım kadarıyla, TCP kayıt sonu vb. yerine verileri "akar".
    • İstemci sunucu iletişimi için bir protokolün iyi tanımlanması gerekir. readLine() çağrısı, tüm veriler döndürülene kadar engellenecektir, bu yüzden onu kullanmayın. Try reading bytes from the stream until -1 is returned.

Bu işe yararsa bana bildirin.