Java 7 ve NIO 2 kullanarak eşzamansız bir sunucu yazmak istiyorum.Bağlantıları kabul etmek için AsynchronousServerSocketChannel'i nasıl kullanmalıyım?
Ancak AsynchronousServerSocketChannel
'u nasıl kullanmalıyım?
E.g. Beraber başlıyorsa: Ben server.accept()
yaptığınızda o çağrı asenkron çünkü
final AsynchronousServerSocketChannel server =
AsynchronousServerSocketChannel.open().bind(
new InetSocketAddress(port));
Ardından, program sonlanır. Ve eğer bu kodu sonsuz bir döngüye koyarsam, AcceptPendingException
atılır.
AsynchronousServerSocketChannel
'u kullanarak basit bir eşzamansız sunucu nasıl yazılır? Eğer aynı iş parçacığı yapacak başka bir şey varsa
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.channels.AsynchronousServerSocketChannel;
import java.nio.channels.AsynchronousSocketChannel;
import java.nio.channels.CompletionHandler;
public class AsyncServer {
public static void main(String[] args) {
int port = 8060;
try {
final AsynchronousServerSocketChannel server =
AsynchronousServerSocketChannel.open().bind(
new InetSocketAddress(port));
System.out.println("Server listening on " + port);
server.accept("Client connection",
new CompletionHandler<AsynchronousSocketChannel, Object>() {
public void completed(AsynchronousSocketChannel ch, Object att) {
System.out.println("Accepted a connection");
// accept the next connection
server.accept("Client connection", this);
// handle this connection
//TODO handle(ch);
}
public void failed(Throwable exc, Object att) {
System.out.println("Failed to accept connection");
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}
İstemci-sunucu uygulaması için özel olarak ise Netty çerçevesini kullanabilirsiniz gibi mandalını. Ayrıca java NIO kullanır. Sunucunun kolay ve hızlı bir şekilde gelişmesidir. http://netty.io/ –
@Optimus üzerinden ilerleyin: Netty'yi biliyorum ama bu soruyla alakalı değil. – Jonas