【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) {

			}
		}

下一节:等待

时间: 2024-10-25 20:02:17

【JAVA】【NIO】10、Java NIO ServerSocketChannel的相关文章

Java Nio 十六、Java NIO Files

最后更新:2015-04-15 这个Java NIO的Files类(java.nio.file.Files)提供了数个方法中文件系统中操作文件.这个Java NIO的Files类教程将会覆盖这些方法的大部分通用方法的使用.这个类包含了许多的方法,所以也可以核对这个JavaDoc,如果你需要一个没有在这里描述的方法.这个Files类只是可能为了它仍然有一个方法. 这个java.nio.file.Files类同java.nio.file.Path实例一起工作,以至于你在同Files类工作之前需要理解

Java第二天——标识符命名规则、Java的知识、快捷键的使用、Scanner获取值的常用方法

1.标识符命名规则 字母.下划线.数字.美元符号($)由这四个部分组成. 标识符=首字母+其他 首字母:字母.下划线.美元符号($) 其他:字母.下划线.数字.美元符号($) 注意: 1.首字母不能为数字 2.标识符不能是关键字 3.java语言严格区分大小写,比如:$name $Name表示两个不同的标识符 2.java程序的注释: 单行注释(//).多行注释(/**/).文档(doc)注释 单行注释:一般用于对每一行代码进行说明 多行注释:一般用于对每一段代码.某个方法.某个源文件进行解释说

elasticsearch系列七:ES Java客户端-Elasticsearch Java client(ES Client 简介、Java REST Client、Java Client、Spring Data Elasticsearch)

一.ES Client 简介 1. ES是一个服务,采用C/S结构 2. 回顾 ES的架构 3. ES支持的客户端连接方式 3.1 REST API ,端口 9200 这种连接方式对应于架构图中的RESTful style API这一层,这种客户端的连接方式是RESTful风格的,使用http的方式进行连接 3.2 Transport 连接 端口 9300 这种连接方式对应于架构图中的Transport这一层,这种客户端连接方式是直接连接ES的节点,使用TCP的方式进行连接 4. ES提供了多种

Java Nio 十四、Java NIO vs. IO

最后更新时间:2014-06-23 当学习Java NIO和IO的API的时候,一个问题很快的就会出现中我们的脑中: 我什么时候应该使用IO,什么时候应该使用NIO? 在这篇文章中我将会尝试着写出中NIO和IO之间不同的地方,他们的使用场景,以及他们怎么影响你的代码设计. Java NIO和IO的主要不同 下面的表格总结了Java NIO和IO的主要不同.针对这个表格中的不同点我将会给予更加详细的说明. IO NIO 基于流的 基于缓冲区的 堵塞IO 非堵塞IO   Selectors(选择器)

每天五个java相关面试题(10)--java基础详解篇2

好勒好勒.一起加油 一.HashMap和Hashtable的区别. 答: HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable. HashMap允许将null作为一个entry的key或者value,而Hashtable不允许. HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey.因

【JAVA】【NIO】9、Java NIO SocketChannel

Java NIO的SocketChannel是连接tcp网络套接字的channel.有如下两种方式去创建: 1.打开一个SocketChannel,连接到网络上的一个server 2.当ServerSocketChannel收到一个连接,SocketChannel就创建了 打开SocketChannel SocketChannel socketChannel = SocketChannel.open(); socketChannel.connect(new InetSocketAddress("

java的几个版本以及jre,jdk等概念——【转载】JDK、Java SE、Java EE、Java ME我该选

我们平时使用的一些软件,有一部分需要Java环境的支持,但是SUN那么多的产品,让人眼花缭乱的版本号,前看后看都差不多的缩写,让我们选择起来的时候常常望而却步,只好跟着感觉走.所以下面我要介绍的就是那些让大家困惑的东西,首先让我们看看SUN的产品之多:下载地址:http://developers.sun.com/downloads/ 哈哈还没有展开它们的子选项呢,让人眼花缭乱,下面介绍大家使用的比较广泛的名词吧:(一)J2SEJava2平台标准版(Java2 Platform Standard

Java内存分配(直接内存、堆内存、Unsafel类、内存映射文件)

1.Java直接内存与堆内存-MarchOn 2.Java内存映射文件-MarchOn 3.Java Unsafe的使用-MarchOn 简单总结: 1.内存映射文件 读文件时候一般要两次复制:从磁盘复制到内核空间再复制到用户空间,内存映射文件避免了第二次复制,且内存分配在内核空间,应用程序访问的就是操作系统的内核内存空间,因此极大提高了读取效率.写文件同理. 2.堆内存分配与直接内存分配: Java申请空间时通常是从JVM堆内存分配的,即 ByteBuffer.allocate(int cap

hibernate、java、数据库对应类型

类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述   VARCHAR L+N VARCHAR java.lang.String 12   CHAR N CHAR java.lang.String 1   BLOB L+N BLOB java.lang.byte[] -4   TEXT 65535 VARCHAR java.lang.String -1               INTEGER 4 INTEGER UNSIGNED java.lang.Long 4