【Java NIO 简例】ServerSocketChannel

15 篇文章 0 订阅

 

原文:《Java NIO ServerSocketChannel

Java NIO 中的 ServerSocketChannel 用于在TCP通信中监听来自客户端的连接。

 

开启 ServerSocketChannel

Java代码

 

  1. ServerSocketChannel channel = ServerSocketChannel.open();  

 

关闭 ServerSocketChannel

可直接调用 ServerSocketChannel.close() 方法,也可以 try-with-resources 的方式关闭。

Java代码

 

  1. channel.close();  

 

监听来自客户端的连接

通过 ServerSocketChannel.accept() 方法可以获得一个来自客户端的 SocketChannel 实例。

如果 ServerSocketChannel 是阻塞模式的,此方法将阻塞,直到获得一个来自客户端的连接或出错。

如果 ServerSocketChannel 是非阻塞模式的,此方法会立即返回;如果没有连接,返回值为null。

示例:

Java代码

 

  1. while (true) {  

  2.   SocketChannel clientChannel = serverSocketChannel.accept();  

  3.   // 处理客户端连接...  

  4. }  

实际项目中可以设置自定义的退出条件,而非 while(true)

 

非阻塞模式示例

Java代码

 

  1. ServerSocketChannel serverChannel = ServerSocketChannel.open();  

  2. serverChannel.socket.bind(new InetSocketAddress(7890));  

  3. serverChannel.configureBlocking(false);  

  4. while (true) {  

  5.   SocketChannel clientChannel = serverChannel.accept();  

  6.   if (null != clientChannel) {  

  7.     // 处理客户端连接...  

  8.   }  

  9. }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值