5

新しいタイプ(シリアルポートなど)をどのように定義しjava.nio.channels.SelectableChannelますか?

4

2 に答える 2

2

おそらくjava.nio.channels.spi.AbstractSelectableChannel、必要な実装を作成するために拡張する必要があります。別のことを求めている場合は、より詳細な質問をする必要があります。JDK ソース コードは、ダウンロードするバージョンに応じて、いくつかの異なるライセンスでダウンロードできます。実装する必要があるものを完全に理解するために、JDK 実装 ( 、 など...) を表示するオプションがありますjava.nio.channels.Channeljava.nio.channels.SocketChannelただし、これを行う場合は、ダウンロードしたソース コードのライセンスに従うことができない限り、JDK ソースからコードをコピーしないように注意してください。

Java NIOが役立つかもしれません。

于 2009-05-26T19:11:05.063 に答える
1

私の理解では、Java の実装は unix の c 関数に基づいていselect()ます (Windows の実装は少し異なっていたことを覚えているようです)。

OS (および JVM 引数!) に応じて、さまざまなネイティブ OS 関数が呼び出されますが、それらに共通しているのは、それがネイティブ コードであることです。基本的な機能は Java では実装されていません。

基礎となる OS (実際にはファイルハンドルに依存している) の (または類似の)ライブラリにアクセスするライブラリを作成したい場合はselect()、JNI を使用することを余儀なくされていると思います。それを回避する方法はないと思います。

Java の Selector/SelectableChannel は、実際にselect()できることの貧弱なサブセットです。

于 2009-05-27T22:18:42.813 に答える