返回顶部
首页 > 资讯 > 精选 >JAVA-NIO之Socket/ServerSocket Channel(详解)
  • 286
分享到

JAVA-NIO之Socket/ServerSocket Channel(详解)

serversocketchannelsocket 2023-05-31 12:05:23 286人浏览 独家记忆
摘要

一、ServerSocketChannelJava NIO中的 ServerSocketChannel 是一个可以监听新进来的tcp连接的通道, 就像标准io中的ServerSocket一样。ServerSocketChannel类在 ja

一、ServerSocketChannel

Java NIO中的 ServerSocketChannel 是一个可以监听新进来的tcp连接的通道, 就像标准io中的ServerSocket一样。ServerSocketChannel类在 java.nio.channels包中。

打开 ServerSocketChannel

通过调用 ServerSocketChannel.open() 方法来打开ServerSocketChannel.

关闭 ServerSocketChannel

通过调用ServerSocketChannel.close() 方法来关闭ServerSocketChannel.

监听新进来的连接

通过 ServerSocketChannel.accept() 方法监听新进来的连接。当 accept()方法返回的时候,它返回一个包含新进来的连接的 SocketChannel。因此, accept()方法会一直阻塞到有新连接到达。

通常不会仅仅只监听一个连接,在while循环中调用 accept()方法.

当然,也可以在while循环中使用除了true以外的其它退出准则。

非阻塞模式

ServerSocketChannel可以设置成非阻塞模式。在非阻塞模式下,accept() 方法会立刻返回,如果还没有新进来的连接,返回的将是null。 因此,需要检查返回的SocketChannel是否是null.如:

  @Test  public void text2() throws IOException {    ServerSocketChannel channel = ServerSocketChannel.open();  //新建channel    channel.socket().bind(new InetSocketAddress(9999));   //监听端口    channel.configureBlocking(true);               //设置阻塞    while (true) {      SocketChannel accept = channel.accept();          //设置为阻塞,则此方法阻塞,直到有连接      //如果设置为非阻塞,需要在这里判断 accept == null?      ByteBuffer byteBuffer = ByteBuffer.allocate(1024);      accept.read(byteBuffer);      byteBuffer.flip();                  //反转      while (byteBuffer.hasRemaining()) {          //判断        System.err.println((char)byteBuffer.get());    //输出      }    }  }

--结束END--

本文标题: JAVA-NIO之Socket/ServerSocket Channel(详解)

本文链接: https://lsjlt.com/news/225568.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JAVA-NIO之Socket/ServerSocket Channel(详解)
    一、ServerSocketChannelJava NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的ServerSocket一样。ServerSocketChannel类在 ja...
    99+
    2023-05-31
    serversocket channel socket
  • Java NIO Channel 使用详情
    目录FileChannel输入 FileInputStream输出 FileOutputStreamRandomAccessFile两个 SocketChannelServerSoc...
    99+
    2024-04-02
  • Java网络编程与NIO详解4:浅析NIO包中的Buffer、Channel 和 Selector
    本文转载自互联网本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看https://github.com/h3pl/Java-Tutorial喜欢的话麻烦点下Star哈文章将同步到我的个人博客:ww...
    99+
    2023-06-02
  • Java 基础之NIO 学习详解
    目录一、NIO 简介1、NIO 三大核心(1)缓冲区 Buffer(2)通道 Channel(3)Selector 选择器2、NIO 和 IO 的区别二、NIO 的 API...
    99+
    2024-04-02
  • Java socket详解
    Java中的Socket是一种用于网络通信的机制,可以实现不同计算机上的进程之间的通信。Socket本质上是一种封装了网络协议的编程...
    99+
    2023-09-15
    Java
  • Golang并发编程之Channel详解
    目录0. 简介1. channel数据结构2. channel创建3. 数据发送3.1 空通道的数据发送3.2 直接发送3.3 缓存区3.4 阻塞发送4. 接收数据4.1 空通道的数...
    99+
    2023-05-19
    Golang并发编程Channel Golang并发编程 Golang Channel
  • Java NIO Buffer实现原理详解
    目录1、Buffer的继承体系2、Buffer的操作API使用案例3、Buffer的基本原理4、allocate方法初始化一个指定容量大小的缓冲区5、slice方法缓冲区分片6、只读...
    99+
    2024-04-02
  • Java中Socket用法详解
    目录1 问题引入1.1 网络架构模型1.1.1 OSI参考模型1.1.2 TCP/IP五层模型1.1.3 各协议层的说明1.2 网络编程中的问题1.3 TCP协议与UDP协议1.3....
    99+
    2024-04-02
  • Java NIO服务器端开发详解
    一、NIO类库简介  1、缓冲区Buffer  Buffer是一个对象,包含一些要写入和读出的数据。  在NIO中,所有的数据都是用缓冲区处理的,读取数据时,它是从通道(Channel)直接读到缓冲区中,在写入数据时,也是从缓冲区写入到通道...
    99+
    2023-05-30
    java nio 服务器
  • python之Socket网络编程详解
    什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系。在数学上,网络是一种图,一般认为专指加权图。网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类型的实际问题中抽象出来的模型。在计算机...
    99+
    2022-06-04
    详解 网络编程 python
  • Go语言入门学习之Channel通道详解
    目录前言通道的声明通道的初始化发送和接收数据通道的关闭通道的容量与长度缓冲通道与无缓冲通道双向通道和单向通道遍历通道fibonacci 数列参考文章:总结前言 不同于传统的多线程并发...
    99+
    2024-04-02
  • python基础之Socket套接字详解
    前言 Python语言提供了Socket套接字来实现网络通信。 Python的应用程序通常通过Socket"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可...
    99+
    2024-04-02
  • Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)
    本文转载 https://www.javadoop.com本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看https://github.com/h3pl/Java-Tutorial喜欢的话麻烦点...
    99+
    2023-06-02
  • Java图文并茂详解NIO与零拷贝
    目录一、概念说明1、传统IO2、mmap3、sendfile4、mmap与sendfile二、传统IO传输文件代码示例1、服务端代码2、客户端代码3、控制台出输出三、NIO传输文件代...
    99+
    2022-11-16
    Java NIO与零拷贝 Java NIO Java 零拷贝
  • 【JAVA基础】- 同步非阻塞模式NIO详解
    【JAVA基础】- 同步非阻塞模式NIO详解 文章目录 【JAVA基础】- 同步非阻塞模式NIO详解一、概述二、常用概念三、NIO的实现原理四、NIO代码实现客户端实现服务端实现 ...
    99+
    2023-09-03
    java nio
  • Java使用Socket简单通讯详解
    目录Java实现基于Socket的简单通信 一.ServerSocket1.使用JavaFX写的小界面,方便观察客户端连接情况2.创建ServerSocket并处理客户端连...
    99+
    2024-04-02
  • 基于BIO的Java Socket通信详解
    BIO,即阻塞IO,在基于Socket的消息通信过程中,Socket服务端向外部提供服务,而Socket客户端可以建立到Socket服务端的连接,进而发送请求数据,然后等待Socket服务端处理,并返回处理结果(响应)。基于BIO的通信,S...
    99+
    2023-05-30
    bio java socket
  • Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理
    本文转自互联网本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看https://github.com/h3pl/Java-Tutorial喜欢的话麻烦点下Star哈文章将同步到我的个人博客:www...
    99+
    2023-06-02
  • Java框架解说之BIO NIO AIO不同IO模型演进之路
    目录引言IO模型1、什么是IO2、应用程序IO交互(1)计算机资源统一管理(2)底层硬件调用统一封装3、5种IO模型(1)阻塞型IO(2)非阻塞型IO(3)多路复用IO(4)信号驱动...
    99+
    2024-04-02
  • Java NIO中四大核心组件的使用详解
    目录一、基础概念1.1 IO和NIO的区别1.2 缓冲区1.3 通道1.4 选择器和选择键二、核心组件2.1 Channel2.2 Buffer2.3 Selector三. 总结Ja...
    99+
    2023-05-20
    Java NIO核心组件使用 Java NIO组件 Java NIO
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作