1 Şubat 2018 Perşembe

SocketChannel Sınıfı - NIO TCP İstemcisi

Giriş
Şu satırı dahil ederiz.
import java.nio.channels.SocketChannel;
TCP istemcisidir. TCP sunucusu için ServerSocketChannel sınıfı kullanılır. UDP sunucusu için DatagramChannel sınıfı kullanılır.

Tüm TCP, UDP socketlerini ortak bir veri yapısında toplamak istersek AbstractSelectableChannel veya SelectableChannel sınıflarını kullanabiliriz.

close metodu
Örnek ver

configureBlocking metodu
Normalde SocketChannel nesnesi blocking davranış gösterir.

Örnek
Şöyle yaparız
SocketChannel socketChannel = SocketChannel.open();
socketChannel.configureBlocking(false);
socketChannel.connect(new InetSocketAddress(host, port));
// block until connection is finished
while (!socketChannel.finishConnect()) {
  LockSupport.parkNanos(MILLISECONDS.toNanos(1));
}
connect metodu
Örnek
Şöyle yaparız.
sc.connect(new InetSocketAddress(ip, portfile));
isRegistered metodu
Selector nesnesine abone olup olmadığını döner.
Örnek ver

open metodu
Bağlanmamış socket açar. Daha sonra connect() çağrısı yapmak gerekir.

Örnek
Şöyle yaparız.
SocketChannel sc = SocketChannel.open();
open metodu - InetSocketAddress
Şöyle yaparız. SocketChannel soyut bir sınıf olduğu için open metodu çağırmaya gerek var.
SocketChannel sc = SocketChannel.open(new InetSocketAddress("localhost", 4321));
read metodu
Şöyle yaparız.
ByteBuffer buffer = ByteBuffer.allocate(1024);

//read the data sent from peer
while (clientf.read(buffer) > 0) {

  buffer.flip();

  while (buffer.hasRemaining()) { //Process data
    ...
  }

  buffer.clear();
  
}
register metodu
Selector nesnesine abone olur.
Örnek ver

write metodu
Şöyle yaparız.
ByteBuffer buffer = ...;


while(buffer.hasRemaining()) {
  sc.write(buffer);
}

Hiç yorum yok:

Yorum Gönder