基于Java NIO的Socket通信
来源:互联网 发布:c语言else是什么意思 编辑:程序博客网 时间:2024/05/19 13:59
Java NIO模式的Socket通信,是一种同步非阻塞IO设计模式,它为Reactor模式实现提供了基础。
下面看看,Java实现的一个服务端和客户端通信的例子。
NIO模式的基本原理描述如下:
服务端打开一个通道(ServerSocketChannel),并向通道中注册一个选择器(Selector),这个选择器是与一些感兴趣的操作的标识(SelectionKey,即通过这个标识可以定位到具体的操作,从而进行响应的处理)相关联的,然后基于选择器(Selector)轮询通道(ServerSocketChannel)上注册的事件,并进行相应的处理。
客户端在请求与服务端通信时,也可以向服务器端一样注册(比服务端少了一个SelectionKey.OP_ACCEPT操作集合),并通过轮询来处理指定的事件,而不必阻塞。
下面的例子,主要以服务端为例,而客户端只是简单地发送请求数据和读响应数据。
服务端实现,代码如下所示:
客户端实现,代码如下所示:
上述实现,NioTcpServer服务线程启动后,监听指定端口,等待客户端请求的到来,然后NioTcpClient客户端进程启动并发送请求数据,服务端接收到请求数据后,响应客户端(将请求的数据作为响应数据写回到客户端通道SocketChannel,并等待客户端处理)。
实际上,客户端和服务端可以采用同样轮询的非阻塞模式来实现,为简单实现在这个例子中我们把客户端角色简化了,而实际上它可能在另一个系统通信中充当服务端角色。
另外,上面对于不同事件是采用非线程的方式来处理,只是简单地调用处理的方法。在实际中,如果存在大量连接、读写请求,可以考虑使用线程池来更大程度地并发处理,提高服务端处理的速度和吞吐量,提升系统性能。
- 基于Java NIO的Socket通信
- 基于Java NIO的Socket通信
- 基于Java NIO的Socket通信
- 基于Java NIO 的socket通信实例
- 基于Java NIO的Socket通信
- 基于Java NIO的Socket通信
- 基于Java NIO的Socket通信
- 基于Java NIO的Socket通信
- 基于Java NIO的Socket通信
- 基于 JAVA NIO 的socket通信
- 基于JAVA NIO的socket通信
- Java TCP/IP Socket,基于NIO的TCP通信
- Java NIO Socket通信
- Java NIO Socket通信
- Java NIO Socket通信
- java NIO Socket通信
- Java NIO Socket通信
- 【Java TCP/IP Socket】基于NIO的TCP通信(含代码)
- Linux下的tar压缩解压缩命令详解
- 弹出软键盘挤压上一个activity页面变形
- C.土豪银行
- java工厂模式示例
- 图像的结构张量MATLAB代码
- 基于Java NIO的Socket通信
- Linux系统中NCBI BLAST+本地化教程
- mybatis-范围和生命周期
- [BZOJ1853][SCOI2010][容斥原理]幸运数字
- linux压缩和解压缩命令大全
- 第一个只出现一次的字符
- J2EE-MVC分层及常用词解释
- 字符串处理 explode--使用一个字符串分割另一个字符串
- 判断后是否打开修改窗口