`
AAries
  • 浏览: 39723 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

SocketChannel

 
阅读更多
1.SocketChannel 客户端与 ServerSocketChannel 服务器端通信

2.客户端使用SocketChannel的connect方法连接服务器时,服务器会收到一个可接受的包。建立连接,同时在此时设置下一次的包是可读或是可写等等。

3.如果服务器端指定为可读,而客户端指定为可写,会出异常。反之亦然。

4.如果在服务器端为指定下次接受的包的读写性,则既不会读也不会写。

5.在读buffer前必须flip();

遍历一个selectionkey集合。
e.g. SocketChannel sk = (SocketChannel)SelectionKey.channel();
     ByteBuffer buf = (buffer)selectionKey.attachment();
     buf.clear();
     long readNum = sk.read(buf);
     if(readNum == -1)
     {
       /*buf为空*/
     }
     else
     {
buf.flip();
        String receive = Charset.forName("UTF-16").newDecoder().decode(buff).toString();
     }
分享到:
评论

相关推荐

    tcp.rar_SocketChannel_SocketChannel HTTPS_java socketchannel_非阻

    SocketChannel是Java NIO(Non-blocking Input/Output,非阻塞式输入/输出)框架中的一个核心组件,它提供了一种高效、低级的网络通信方式。非阻塞模式是SocketChannel的重要特性,使得程序在等待数据时不会被挂起,...

    java SocketChannel通信实例

    Java中的SocketChannel通信是网络编程的一个重要组成部分,它支持阻塞和非阻塞两种模式,特别是在高并发、低延迟的应用场景下,非阻塞模式显得尤为重要。本实例着重讲解如何利用Java NIO(Non-blocking Input/Output...

    java的ServerSocketChannel与SocketChannel的使用

    Java的`ServerSocketChannel`和`SocketChannel`是NIO(非阻塞I/O)框架中的核心组件,它们为创建高性能、高并发的网络服务提供了基础。在Java中,传统的I/O模型基于流(Stream),而NIO则引入了通道(Channel)和...

    SocketChannel、ServerSocketChannel与Selector的实际案例

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

    使用非阻塞ServerSocketChannel、SocketChannel代替ServerSocket和Socket

    为了解决这个问题,Java引入了非阻塞I/O(Non-blocking I/O,简称NIO),其中的核心类包括ServerSocketChannel和SocketChannel。本篇文章将详细解析如何使用非阻塞ServerSocketChannel和SocketChannel来替代传统的...

    【IT十八掌徐培成】Java基础第27天-02.NIO-ServerSocketChannel-SocketChannel.zip

    在本教程中,"IT十八掌徐培成"将带领我们深入理解Java NIO中的ServerSocketChannel和SocketChannel。 1. **ServerSocketChannel**: ServerSocketChannel是Java NIO中用于服务器端监听客户端连接的通道。通过调用`...

    niossl:SSLSocketChannel和SSLServerSocketChannel实现

    NIO SSL 与阻塞IO不同,JVM不提供扩展基本套接字通道类的标准SSLSocketChannel和SSLServerSocketChannel类。 相反,必须使用手动编排SSL交换。 该项目提供了和,可以像和一样使用。入门直接下载您可以直接下载并将其...

    ProxiedSocketChannel:一个 Java SocketChannel 实现,它使用提供的 Proxy 实例通过提供的代理建立网络连接

    一个 Java SocketChannel 实现,它使用提供的 Proxy 实例通过提供的代理建立网络连接。 SocketChannel 是通过表面下的 Socket 实例实现的。 限制 此实现目前仅支持阻塞模式。 请注意,这是 SocketChannel 实例的默认...

    java多路复用socket客户端.

    Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel: 打开一个SocketChannel并连接到互联网上的某台服务器。 一个新连接到达ServerSocketChannel时,会创建一个...

    基于SocketChannel的即时聊天程序

    没有使用其他jar包 主要功能: 1、广场群聊,即发送的消息所有在线的人都能看到 2、聊天室群聊,可以创建聊天室,进入聊天室的人可以在里面聊天,创建的人或者是第一个人为管理员,拥有踢人的权限;...

    Netty5.0架构剖析和源码解读

    SocketChannel socketChannel = SocketChannel.open(new InetSocketAddress("localhost", 8080)); // 设置为非阻塞模式 socketChannel.configureBlocking(false); // 发送数据 String message = "Hello, Server...

    高级 socket 通信

    本主题聚焦于“高级Socket通信”,特别是涉及到使用SocketChannel的实现方式。SocketChannel是Java NIO(非阻塞I/O)框架的一部分,它提供了一种更高效、灵活的方式来处理网络连接。 首先,我们要理解Socket的基本...

    Java NIO 聊天室 JSwing

    SocketChannel channel = (SocketChannel) key .channel(); System.out.println("channel client ?" + channel); // 如果正在连接,则完成连接 if(channel.isConnectionPending()){ channel....

    Android开发进阶之NIO非阻塞包

    - **创建SocketChannel**:可以通过`SocketChannel.open()`来创建一个新的SocketChannel实例。 - **设置非阻塞模式**:通过调用`socketChannel.configureBlocking(false)`将SocketChannel设置为非阻塞模式。 - **...

    经典算法导论

    - **常见类型**:包括`FileChannel`、`SocketChannel`等。 - **使用方式**:通过打开文件或网络连接等方式获取通道,然后通过通道进行数据传输。 ##### 2. 新I/O在文件操作中的应用 - **文件读写**:使用`...

    用Java实现非阻塞通信

    ● SocketChannel:Socket的替代类,支持阻塞通信与非阻塞通信。 ● Selector:为ServerSocketChannel监控接收连接就绪事件,为SocketChannel监控连接就绪、读就绪和写就绪事件。 ● SelectionKey:代表...

    NIO-实践-多线程实例

    SocketChannel被Selector检查,检查其声称可以接受的状态是否已经产生,如当SocketChannel在向Selector注册是设置了可接受状态为Read,此时当SocketChannel接收到数据后将进入可读状态。 如果需要实现一个线程或...

    android nio程序

    2. **SocketChannel**:当客户端连接后,服务器端会返回一个`SocketChannel`,通过它可以进行读写操作。 3. **Selector**:注册`SocketChannel`到选择器,监听读写事件。`Selector.open()`创建选择器,`register()`...

    java nio Selector的使用-客户端

    SocketChannel socketChannel = SocketChannel.open(); socketChannel.configureBlocking(false); // 连接到服务器 InetSocketAddress serverAddress = new InetSocketAddress("localhost", 8080); ...

    java-nio.rar_NIO_java nio

    在Java NIO中,`SocketChannel`用于客户端和服务器之间的通信,它支持非阻塞模式,这意味着当没有数据可读或无法写入时,线程不会被阻塞,而是可以执行其他任务。 在给定的压缩包文件中,有两个源代码文件:`...

Global site tag (gtag.js) - Google Analytics