標籤:java nio 翻譯
Java NIO的ServerSocketChannel是用來監聽外來TCP串連的channel,就想標準Java網路中的ServerSocket。執行個體如下:
ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();serverSocketChannel.socket().bind(new InetSocketAddress(8090));while(true) {SocketChannel socketChannel = serverSocketChannel.accept();}
開啟一個ServerSocketChannel
通過open方法開啟
ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
關閉ServerSocketChannel
通過close方法
監聽外來串連
監聽外來串連通過調用accept方法,當accept方法返回,將返回一個串連的SocketChannel。所以accept方法會阻塞直到有串連。
由於一般情況對單個串連沒有監聽的興趣,你可以在迴圈內調用accept方法。
while(true) {SocketChannel socketChannel = serverSocketChannel.accept();}
當然,你應該使用一些退出迴圈的條件,而不是true。
非阻塞模式
ServerSocketChannel能設定成非阻塞模式,在非阻塞模式下,accept方法立即返回,有可能返回null(如果沒有串連建立)。因此你必須檢查返回的SocketChannel是不是null。如下:
while(true) {SocketChannel socketChannel = serverSocketChannel.accept();if(socketChannel!=null) {}}
下一節:等待
【JAVA】【NIO】10、Java NIO ServerSocketChannel