SOcket nioのByteBufferを学ぶ

2237 ワード

1:ByteBufferとは?
ByteBufferはバイトバッファです.バイトバッファとは何ですか.例を挙げると、CPUとハードディスク(HDD)の間のメモリのようなものです.分かったでしょう.
2:ByteBufferは何に使いますか.
名前の通り、バイトを格納するために使用されます.よく使われるのは、プログラムがネットワークにデータを転送するときです.
3:ByteBufferの使い方
ByteBufferを使用するには、3つのポインタ式を理解することが重要です.义齿 そしてこの3つのポインタの関係はposition<=limit<=capacityである.
 positionは現在読み書きされている位置です. limitは最大で読み書きできる位置です. Capacityはキャッシュの容量です.   プログラムを見てください. 1:ByteBuffer buffer = ByteBuffer.allocate(5);  position=0,limit=5,capacity=5  2:buffer.put((byte)1);                         position=1,limit=5,capacity=5  3:buffer.flip();                               position=0,limit=1,capacity=5  4:buffer.get();                                position=1,limit=1,capacity=5
 最初の行:ByteBufferを作成し、初期化状態でpostionは0、limit=capacity=バッファサイズ 2行目:バッファに1バイト置くとpositionは後ろに移動しますがlimitを超えません.超えると誤報になります. 3行目:flipメソッドはlimitをpositionの値に設定し、positionは0に復元し、リードバッファの準備をします. 4行目:バッファから1バイトを読み込むとpositionは後ろに移動しますが、limitを超えず、超えた場合はエラーが表示されます.
4:プログラム
ByteBuffer buffer = ByteBuffer.allocate(5);
		
		System.out.println("   :"+buffer.position());
		System.out.println("   :"+buffer.limit());
		System.out.println("   :"+buffer.capacity());
		
		System.out.println();
		buffer.put((byte)1);
		
		System.out.println("  1   :"+buffer.position());
		System.out.println("  1   :"+buffer.limit());
		System.out.println("  1   :"+buffer.capacity());
		
		System.out.println();
		buffer.flip();
		
		System.out.println("flip  :"+buffer.position());
		System.out.println("flip  :"+buffer.limit());
		System.out.println("flip  :"+buffer.capacity());
		
		System.out.println();
		buffer.get();
		
		System.out.println("      :"+buffer.position());
		System.out.println("      :"+buffer.limit());
		System.out.println("      :"+buffer.capacity());
5:出力
   :0
   :5
   :5

  1   :1
  1   :5
  1   :5

flip  :0
flip  :1
flip  :5

      :1
      :1
      :5