Java NIO'da, bir ServerSocketChannel'in neden bir seçiciye sahip olması gerektiği kolayca anlaşılabilir. Seçici, G/Ç işlemleri için hazır olan birkaç istemci kanalı arasından kontrol edebilir. Bununla birlikte, bazı yorumlarda web üzerinde okudum, seçici mekanizma, istemci SocketChannel'e uygulanmaktadır. Bir seçicinin neden bir müşteriye kullandığını anlamıyorum. Herkesin sadece tek bir sunucunun olduğu durumlarda neden kullanıldığını açıklayabilir mi?Java NIO'da bir istemci SocketChannel için bir seçici mi?
cevap
Yüzlerce sunucuya bağlanmadıkça, bir istemcideki engellenmeyen NIO'nun noktasını görmek zordur. Ancak, engellemeyen bir NIO kullanıyorsanız, kesinlikle bir Selector
kullanmanız gerekir, aksi takdirde kanalı ne zaman okuyacağınızı veya tamamlanmamış bir yazının ardından tekrar yazılabileceğini bilemezsiniz.
Seçiciler, tek bir iş parçacığı kullanarak birden fazla kanal arasında eşzamanlı iletişim hizmeti vermenizi sağlar. Aynı anda birden fazla sunucuyla iletişim kurmanız gerektiğinde veya istemcinin rolündeki eşdüzey bilgisayarlarla iletişim kurduğunuzda (örneğin torrent okurken) bir istemcide yararlı olabilir.
Cevabınız için teşekkür ederiz. İstemciler ve sunucu arasındaki SelectionKey'lerin karşılıklı değişimi için istemciler için Seçicilerin açıkça gerekli olduğuna katkıda bulunmak isterim. Katılıyor musun katılmıyor musun? – Arvanem
@Arvanem "Gerekli" olduklarını söyleyemem, çünkü aynı şeyi iki iplik kullanarak yapabilirsiniz. Yine de seçiciler kesinlikle uygun olup, eşzamanlı bir görevi ele almak için tek bir iş parçacığı kod yazmanızı sağlar. – dasblinkenlight
Ancak, sunucu soket kanalınızın bir seçici kullanıyor olması şarttır, değil mi? SelectionKey'i sunucuya geri göndermenize izin veren bir seçiciden ayrı bir yol olmadığı için? – Arvanem
- 1. Java SocketChannel eşdeğeri Erlang
- 2. Java ServerSocketChannel SocketChannel (Geri Arama)
- 3. java nio Seçici uyandırma
- 4. SSL ve SocketChannel
- 5. Seçici yerine bir blok nesnesi mi kullanıyorsunuz?
- 6. .net winform için bir ay/yıl seçici denetimi mi arıyorsunuz?
- 7. PHP Bir istemci $ _SESSION değişkenini ayarlayabilir mi?
- 8. Haberleşme Seçenekleri: Android'in bir istemci Java sunucu
- 9. HTML5'deki metin kutuları için seçici mi?
- 10. Java için bir CalDAV istemci kütüphanesi var mı?
- 11. Java İstemci WebRTC'ye
- 12. Bir MongoDB arbiter'i istemci bağlantı yapılandırmasına dahil edilmeli mi?
- 13. İstemci İstemci Nesnesi Java tarafından ObjectStream üzerinde Java tarafından gönderilmiyor
- 14. java Jersey 2.1 istemci iş parçacığı güvenli mi?
- 15. Java ile yazılmış bir sunucuya bir C# istemci yazmaya çalışıyorum bir Java Sunucu
- 16. Tanınmayan seçici bir iOS uygulaması için storyboardlar
- 17. jQuery seçici, her bir sayfa için farklı
- 18. Tarih seçici için bir simge ayarlamak istiyorum
- 19. Java: Object (In | Out) putStreams ile bir blok SocketChannel üzerinde eşzamanlı okuma ve yazma mümkün mü?
- 20. Varsayılan parametrelerle hızlı fonksiyonlar ayrıca bir seçici mi?
- 21. Bir jQuery seçici
- 22. Bir jquery seçici
- 23. Java (Android) WebSocket İstemci Kitaplıkları
- 24. Java RMI - İstemci Zaman Aşımı
- 25. bir RPC kodlanmış WSDL gelen bir Java istemci oluşturmak için en kolay yolu nedir
- 26. Android için herhangi bir Sunucu/İstemci modeli?
- 27. Bir öğe için jquery seçici Bir alt öğeyi YANLIYOR
- 28. .NET ve Java istemci uygulamaları arasında IPC
- 29. :: - webkit seçim seçici hiç desteklendi mi?
- 30. İşletim sistemi için varsayılan Dosya Seçici nasıl kullanılır? java
Örneğin, sayfanın altındaki http://tutorials.jenkov.com/java-nio/socket-channel.html seçiciler ve SocketChannels için öneri yapar. – Arvanem
Ama müşteriler için hiç birisini önermiyor. Bu öğreticide pek çok kötü tavsiye var: örneğin, engelleme olmayan modda döngü. Daha iyi bir tane bulun. – EJP
@EJP deneyecek, teşekkürler. – Arvanem