`
liufei.fir
  • 浏览: 690152 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java中ServerSocketChannel原理

阅读更多
1 NIO介绍

NIO非堵塞应用通常适用用在I/O读写等方面,我们知道,系统运行的性能瓶颈通常在I/O读写,包括对端口和文件的操作上,过去,在打开一个I /O通道后,read()将一直等待在端口一边读取字节内容,假如没有内容进来,read()也是傻傻的等,这会影响我们程序继续做其他事情,那么改进做法就是开设线程,让线程去等待,但是这样做也是相当耗费资源的。

Java NIO非堵塞技术实际是采取Reactor模式,或者说是Observer模式为我们监察I/O端口,假如有内容进来,会自动通知我们,这样,我们就不必开启多个线程死等,

从外界看,实现了流畅的I/O读写,不堵塞了。Java NIO出现不只是一个技术性能的提高,你会发现网络上到处在介绍它,因为它具有里程碑意义,从JDK1.4开始,Java开始提高性能相关的功能,从而使得Java在底层或者并行分布式计算等操作上已经可以和C或Perl等语言并驾齐驱。

2 NIO主要原理和适用。

NIO 有一个主要的类Selector,这个类似一个观察者,只要我们把需要探知的socketchannel告诉Selector,我们接着做别的事情,当有事件发生时,他会通知我们,传回一组SelectionKey,我们读取这些Key,就会获得我们刚刚注册过的socketchannel,然后,我们从这个Channel中读取数据,放心,包准能够读到,接着我们可以处理这些数据。Selector内部原理实际是在做一个对所注册的channel的轮询访问,不断的轮询(目前就这一个算法),一旦轮询到一个channel有所注册的事情发生,比如数据来了,他就会站起来报告,交出一把钥匙,让我们通过这把钥匙来读取这个channel的内容。
分享到:
评论

相关推荐

    SocketChannel、ServerSocketChannel与Selector的实际案例

    在Java NIO(非阻塞I/O)框架中,SocketChannel、ServerSocketChannel和Selector扮演着关键角色。本文将深入探讨这些组件,并通过一个实际案例——"NServer.java"和"NClient.java"来阐述它们的工作原理和用法。 ...

    Java网编程原理与JSP.Web开发核心技术

    在Java中,可以通过Selector、SocketChannel和ServerSocketChannel等类实现非阻塞I/O。 6. 网络编程的安全性:在进行网络编程时,确保数据传输的安全性是非常重要的。Java提供了SSL和TLS协议的支持,以及相关的加密...

    Java NIO原理 图文分析及代码实现

    ### Java NIO原理 图文分析及代码实现 #### 前言 在深入探讨Java NIO之前,我们先简要回顾一下NIO的概念及其引入的原因。随着互联网的发展,越来越多的应用程序需要处理高并发的网络连接请求。传统的阻塞I/O模型在...

    JavaNIO的原理.pdf

    在Java NIO中,Selector(选择器)充当了Reactor的角色,它可以同时监视多个Channel(通道)的状态,例如是否可读、可写或发生异常。当Selector轮询时,如果发现某个Channel有事件发生,就会返回一个包含这些事件的...

    Java NIO的介绍及工作原理

    - **类型**:Java NIO中提供了多种类型的Channel,包括`FileChannel`、`DatagramChannel`、`SocketChannel`和`ServerSocketChannel`等。 - **作用**:Channel是数据流动的路径,用于在Buffer和I/O设备之间传输数据...

    Java_NIO原理解析

    1. **通道(Channel)**:在Java NIO中,数据是通过通道进行传输的。通道是与I/O设备(如文件、网络套接字等)交互的接口。常见的通道类型有FileChannel、SocketChannel、ServerSocketChannel等。通道是双向的,可以...

    Java NIO原理解析

    1. **通道(Channel)**:在Java NIO中,通道代表了一个打开的I/O连接,如文件、套接字、网络流等。通道是双向的,数据可以从通道读取,也可以写入。与传统的流不同,通道可以在任何时候进行读写,而无需预先知道...

    Java NIO原理和使用

    本文主要简单介绍NIO的基本原理,在下一篇文章中,将结合Reactor模式和著名线程大师Doug Lea的一篇文章深入讨论。 NIO主要原理和适用。 NIO 有一个主要的类Selector,这个类似一个观察者,只要我们把需要探知的...

    分布式Java中的TCP/IP+NIO

    在提供的文档"tcp nio 服务端、客户端例子--参考《分布式Java应用:基础与实践》.doc"中,可能会包含具体的NIO服务端和客户端的代码示例,这些示例将展示如何使用`ServerSocketChannel`、`SocketChannel`、`Selector...

    Scalable io in java.doc

    NIO的一个典型应用场景是Java的ServerSocketChannel和SocketChannel,它们提供了非阻塞的套接字操作。服务器可以使用Selector监听多个客户端连接,当有新的连接请求或数据到达时,Selector会通知服务器,从而避免了...

    Java NIO原理分析及代码实例

    Java NIO中的通道类有FileChannel、SocketChannel、ServerSocketChannel等。通道可以从一个源头(如文件或网络套接字)读取数据,并将数据写入另一个目的地。 2. **缓冲区(Buffer)**:缓冲区是存储数据的容器,它...

    java NIO详细教程

    Java NIO(New IO)是Java平台提供的一种新的IO操作模式,它首次出现在Java 1.4版本中,并在后续版本中不断完善。Java NIO 的设计目的是为了克服传统Java IO API在面对大量并发连接时存在的性能瓶颈。 ##### 使用...

    java网络编程(中文)

    本教程详细介绍了这一主题,旨在帮助初学者和有一定经验的开发者深入理解Java网络编程的核心原理和实践技巧。 首先,我们要明白Java网络编程的基础——Socket编程。Socket是网络通信中的基本组件,它提供了应用程序...

    java HttpServer源码工程

    1. ServerSocketChannel:这是Java NIO中用于监听客户端连接的通道。HttpServer通常会创建一个ServerSocketChannel,并绑定到指定的端口,等待客户端的连接请求。 2. SocketChannel:当客户端连接建立后,...

    java文件传输.pdf

    这个PDF文档描述了一个基于Java NIO(Non-blocking Input/Output)的文件传输实验,旨在让学生理解网络通信的基本原理和编程技巧。实验的目标是实现一个自定义协议的文件传输服务器(FileServer)和客户端...

    一个java NIO的例子

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java标准库提供的一种替代传统I/O模型的新...通过分析和运行这个示例,开发者可以更深入地理解Java NIO的工作原理,并能更好地运用到实际项目中。

    java NIO实例

    在`NIOServer.java`中,服务器端首先会初始化Selector并注册ServerSocketChannel,之后进入一个无限循环,调用selector.select()方法等待事件发生。当有客户端连接时,服务器会处理新连接,创建SocketChannel,并将...

    Java NIO工作原理的全面分析

    Java中的通道类包括FileChannel、SocketChannel、ServerSocketChannel等。通道可以与缓冲区交互,读取数据到缓冲区,或者从缓冲区写入数据到通道。 2. **缓冲区(Buffer)**:缓冲区是NIO的核心组件,是一个可以...

    Java_CMPP3.0_协议实现

    Java CMPP3.0协议实现是一项针对中国移动通信...通过这个项目,开发者不仅可以深入理解CMPP3.0协议的工作原理,还能提升Java NIO和并发编程的能力,对于从事移动通信领域的开发人员来说,这是一个非常有价值的实践。

Global site tag (gtag.js) - Google Analytics