Java NIO ServerSocketChannel
2014-11-20 08:54
525 查看
Java Nio
By Jakob Jenkov Connect with me:
Rate article:Share article:Tweet
Table of ContentsOpening a ServerSocketChannel
Closing a ServerSocketChannel
Listening for Incoming Connections
Non-blocking Mode
A Java NIO ServerSocketChannel is a channel that can listen for incoming TCP connections, just like a
serverSocketChannel.socket().bind(new InetSocketAddress(9999));
while(true){
SocketChannel socketChannel =
serverSocketChannel.accept();
//do something with socketChannel...
}
SocketChannel socketChannel =
serverSocketChannel.accept();
//do something with socketChannel...
}
Of course you would use some other stop-criteria than
serverSocketChannel.socket().bind(new InetSocketAddress(9999));
serverSocketChannel.configureBlocking(false);
while(true){
SocketChannel socketChannel =
serverSocketChannel.accept();
if(socketChannel != null){
//do something with socketChannel...
}
}
Next: Java NIO DatagramChannel
Java NIO ServerSocketChannel
By Jakob Jenkov Connect with me:
Rate article:Share article:Tweet
Table of ContentsOpening a ServerSocketChannel
Closing a ServerSocketChannel
Listening for Incoming Connections
Non-blocking Mode
A Java NIO ServerSocketChannel is a channel that can listen for incoming TCP connections, just like a
ServerSocketin standard Java Networking. The
ServerSocketChannelclass is located in the
java.nio.channelspackage.Here is an example:ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
serverSocketChannel.socket().bind(new InetSocketAddress(9999));
while(true){
SocketChannel socketChannel =
serverSocketChannel.accept();
//do something with socketChannel...
}
Opening a ServerSocketChannel
You open aServerSocketChannelby calling the
ServerSocketChannel.open()method. Here is how that looks:ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
Closing a ServerSocketChannel
Closing aServerSocketChannelis done by calling the
ServerSocketChannel.close()method. Here is how that looks:serverSocketChannel.close();
Listening for Incoming Connections
Listening for incoming connections is done by calling theServerSocketChannel.accept()method. When the
accept()method returns, it returns a
SocketChannelwith an incoming connection. Thus, the
accept()method blocks until an incoming connection arrives.Since you are typically not interested in listening just for a single connection, you call the
accept()inside a while-loop. Here is how that looks:while(true){
SocketChannel socketChannel =
serverSocketChannel.accept();
//do something with socketChannel...
}
Of course you would use some other stop-criteria than
trueinside the while-loop.
Non-blocking Mode
AServerSocketChannelcan be set into non-blocking mode. In non-blocking mode the
accept()method returns immediately, and may thus return null, if no incoming connection had arrived. Therefore you will have to check if the returned
SocketChannelis null. Here is an example:ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
serverSocketChannel.socket().bind(new InetSocketAddress(9999));
serverSocketChannel.configureBlocking(false);
while(true){
SocketChannel socketChannel =
serverSocketChannel.accept();
if(socketChannel != null){
//do something with socketChannel...
}
}
Next: Java NIO DatagramChannel
相关文章推荐
- Java netty之NioServerSocketChannel
- Java Socket:Java-NIO-ServerSocketChannel
- 【JAVA】【NIO】10、Java NIO ServerSocketChannel
- 10. Java NIO ServerSocketChannel 服务端套接字通道
- JAVA-NIO之Socket/ServerSocket Channel(详解)
- Java NIO 学习(四)--ServerSocketChannel与SocketChannel
- 【Java NIO的深入研究】 ServerSocketChannel
- 【Java NIO的深入研究】 ServerSocketChannel
- 【Java NIO的深入研究】 ServerSocketChannel
- 【Java NIO的深入研究】 ServerSocketChannel
- Java Nio 十、Java NIO ServerSocketChannel
- Java NIO ServerSocketChannel
- Java NIO(10-ServerSocketChannel)
- 【JAVA】【NIO】10、Java NIO ServerSocketChannel
- Java NIO ServerSocketChannel
- 《Java 源码分析》:Java NIO 之 ServerSocketChannel
- Java NIO ServerSocketChannel
- Java NIO 之 ServerSocketChannel SocketChannel
- 《Java 源码分析》:Java NIO 之 ServerSocketChannel
- Java NIO —— TCP套接字(ServerSocketChannel & SocketChannel)