【JAVA】【NIO】10、Java NIO ServerSocketChannel

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】11、Java NIO DatagramChannel

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值