nio ServerSocketChannel and SocketChannel

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

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;

public class ServerSocketChannelTest {
    public static void main(String[] args) throws IOException {

        ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
        serverSocketChannel.configureBlocking(false);
        serverSocketChannel.socket().bind(new InetSocketAddress(80));
        System.out.println("server is Listening client");
        while (true) {
            SocketChannel sc = serverSocketChannel.accept();
            if (sc != null) {
                ByteBuffer buffer = ByteBuffer.allocate(1024);
                while (sc.read(buffer) != -1) {
                    buffer.flip();

                    while (buffer.hasRemaining()) {
                        System.out.print((char) buffer.get());
                    }
                    System.out.println();
                    buffer.clear();
                }

            }

        }

        // serverSocketChannel.close();
    }

}


package c.ct.io.nio;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class SocketChannelTest {
    public static void main(String[] args) {

        ExecutorService service = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
        for(int i=0;i<5;i++){
            service.submit(new SocketThread("socketThread"+i));
        }
        service.shutdown();

    }

    private static class SocketThread implements  Runnable{
        private String name;
        public SocketThread(String name) {
            this.name = name;
        }

        @Override
        public void run() {
            SocketChannel socketChannel = null;
            try {
                socketChannel = SocketChannel.open();
                socketChannel.connect(new InetSocketAddress("localhost",80));
            } catch (IOException e) {
                e.printStackTrace();
            }

            String newData = this.name + " New String to write to file..." + System.currentTimeMillis();
            ByteBuffer buffer = ByteBuffer.allocate(newData.length());
            buffer.clear();
            buffer.put(newData.getBytes());
            buffer.flip();
            while(buffer.hasRemaining()) {
                try {
                    socketChannel.write(buffer);
                    socketChannel.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}


 

Petalinux 2021.1 + Vivado 2021 实战:手把手教你为Zynq板卡移植Linux并搞定AXI DMA驱动 本文详细介绍了基于Petalinux 2021.1和Vivado 2021工具链,为Zynq开发板移植Linux系统并开发AXI DMA驱动的全流程。从环境配置、硬件设计到驱动适配与性能优化,提供了实战避坑技巧和版本特异性问题的解决方案,帮助开发者快速构建高速数据传输系统。 阅读详情

相关推荐

2026年9月20日 2026年CSP-S初赛真题整理

这是本次考试最难的部分,涉及Gray Code(格雷码)+ 状态压缩 + 数学推导难点解决方案关键代码问题转化将得分差转化为m−2xim - 2x[i]m−2xi高效枚举Gray Code相邻状态O(1)转移奇偶判断利用奇偶性统一条件。

weixin_51184047的博客 624

NIO学习之ServerSocketChannel和SocketChannel

NIO学习Socket 通道ServerSocketChannelSocketChannel与ServerSocketChannel区别 Socket 通道 (1)新的 socket 通道类可以运行非阻塞模式并且是可选择的,可以激活大程序(如网络服务器和中间件组件)巨大的可伸缩性和灵活性。本节中我们会看到,再也没有为每个 socket 连接使用一个线程的必要了,也避免了管理大量线程所需的上下文交换开销。 借助新的 NIO 类,一个或几个线程就可以管理成百上千的活动 socket 连接了并且只有很少甚至可能

m0_53157173的博客 3784

SLAM算法的优缺点

SLAM(Simultaneous Localization and Mapping,同时定位与地图构建)算法是一种通过传感器数据实时估计机器人自身位置和构建环境地图的技术。

selenia8860的博客 2906

NioServerSocketChannel

在netty Bootstrap启动之后会执行 channel,此时将NioServerSocketChannel的Class对象加入到BootStrap 的ChannelFactory之中,这个ChannelFactory是ReflectiveChannelFactory类型的 但是什么时候真正使用该Channel呢? 这里调用ReflectiveChannelFactory的 首先执行 newSocket方法 ......

qq_44587855的博客 1122

从零搭建高通8255车载开发环境:QNX SDP、SDK配置与镜像编译全流程

本文详细介绍了如何从零搭建高通SA8255P车载开发环境,涵盖QNX SDP部署、SDK工具链配置到多系统镜像编译的全流程。特别针对SAIL安全岛镜像构建、QNX系统优化及Android系统资源分配等关键技术点提供实战指导,帮助开发团队高效完成车载系统开发与调试。

weixin_33582311的博客 364

基于灰度信息的图像配准方法

图像配准方法分为三种:基于灰度信息方法、基于变换域方法和基于特征方法。基于灰度信息方法是直接根据图像或图像块灰度信息进行像素上的对齐,该方法主要思想是直接最小化图像信息差异。然而,图像信息差异的判断准则衍生出不同的配准方法。常见的基于灰度信息的图像配准方法包括互相关法、互信息法和误差平方和法。本节将分别对互相关法、互信息法和误差平方和算法展开介绍,并通过MATLAB进行演示。基于灰度的图像方法容易实现,但同样存在不足。该方法对成像条件(光照,遮挡)、图像形变旋转以及噪声极其敏感,同时具有较高的计算复杂度。

weixin_42068054的博客 3775

NIO编程之ServerSocketChannel用法详解

之前一直看不懂NIO中的ServerSocketChannel和SocketChannel的区别,看了这篇博文,感觉通俗易懂,于是决定分享一下。。。。 在用nio通讯的过程我用以下情景给你模拟: 学校(ServerSocketChannel) 2。 学校教务处(Selector) 3。 老师 (ServerSocket ) 4。 学生 (SocketChannel) 5。 员工号/学生号(Sel...

一起的远方的博客 3983

PyTorch实战(2)——使用PyTorch构建神经网络

在本节中,我们使用 PyTorch 在简单数据集上构建了一个神经网络,训练神经网络来映射输入和输出,并通过执行反向传播来更新权重值以最小化损失值,并利用 Sequential 类简化网络构建过程;介绍了获取网络中间值的常用方法,以及如何使用 save、load 方法保存和加载模型,以避免再次训练模型。

盼小辉丶的博客 1万+

深入理解NIO - Selector、ServerSocketChannel、SocketChannel底层原理

IO多路复用模型 IO多路复用需要OS的支持,IO多路复用模型中,引入了一种新的系统调用,查询IO的就绪状态。 在Linux系统中,JavaNIO的Selector#select() 方法对应的系统调用为select/epoll系统调用。 通过该系统调用,一个进程可以监视多个文件描述符,一旦某个描述符就绪(一般是内核缓冲区可读/可写),内核能够将就绪的状态返回给应用程序。随后,应用程序根据就绪的状态,进行相应的IO系统调用。 目前支持IO多路复用的系统调用,有select、

javaThinker的专栏 2909

第1章:认识OpenClaw

OpenClaw是一个开源的 AI 智能体 Gateway 网关项目名称演变:OpenClaw 原名 Clawdbot,因 Anthropic 商标顾虑在 2026年1月27日更名为 Moltbot(过渡名),最终在1月30日确定为 OpenClaw。三个名字本质是同一个项目,功能完全一致。🏠在你的电脑上运行:完全本地部署,数据隐私有保障📁访问本地文件:可以搜索、读取、编辑你电脑上的文件🔌扩展能力:通过Skills(技能)系统无限扩展功能💬多平台使用。

Maynor的博客 2833

实时数字人SoulX-FlashHead 音视频不对齐解决

【代码】实时数字人SoulX-FlashHead 音视频不对齐解决。

jacke121的专栏 200

【NIO】ServerSocketChannel

前言 Github:https://github.com/yihonglei/java-all Project:java-nio 一 ServerSocketChannel概述 Java NIO中的ServerSocketChannel类定义在java.nio.channels包中。 ServerSocketChannel是一个可以监听新进来的TCP连接的通道,就像标准IO中的Serve...

yhl_jxy的博客 1万+

【人工智能】向量数据库全生命周期数据安全防护体系:破解向量化与检索双环节泄露风险

大模型时代,向量数据库已成为RAG(检索增强生成)架构、语义检索、多模态应用的核心基础设施,解决了大模型幻觉、长上下文窗口限制、私有知识落地等核心痛点。但行业普遍存在认知误区:将Embedding向量等同于“无害的语义压缩乱码”,忽视了向量数据原生的泄露风险。

奶爸的编程之路,也就一周冷个三天 158

NIO学习记录

1.NIO总体介绍(来源: http://ifeve.com/java-nio-all/ 作者:Jakob Jenkov) Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式...

chunlong1003的博客 97

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java NIO 之 ServerSocketChannel SocketChannel

Java NIO 之 ServerSocketChannel/SocketChannelServerSocketChannel介绍Java NIO中ServerSocketChannel是一个可以监听新进来的TCP 连接的通道。既然是监听新的TCP连接,因此ServerSocketChannel一般用于服务器端,与Socket网络编程中的ServerSocket功能类似。在一般的编程实现的逻辑

wojiushimogui的博客 1813

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Socket和ServerSocket/SocketChannel与ServerSocketChannel区别

一:Socket与ServerSocket区别 交互过程 Socket与ServerSocket的交互,下面的图片我觉得已经说的很详细很清楚了。 1.1 ServerSocket类 创建一个ServerSocket类,同时在运行该语句的计算机的指定端口处建立一个监听服务,如: ServerSocket MyListener=new ServerSocket(600); 这里指定提供监听服务的端口是600,一台计算机可以同时提供多个服务,这些不同的服务之间通过端口号来区别,不同...

luzhensmart的专栏 2953

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

《Java源码分析》:Java NIO 之 ServerSocketChannel SocketChannel

Java NIO中ServerSocketChannel是一个可以监听新进来的TCP 连接的通道。既然是监听新的TCP连接,因此ServerSocketChannel一般用于服务器端,与Socket网络编程中的ServerSocket功能类似。/** 既然是服务器端,肯定需要一个ServerSocketChannel来监听新进来的TCP连接。* *///监听指定的端口号//检测是否有客户端连接进来//在使用完毕后,会进行关闭以上的逻辑基本与Socket编程的服务器一致。

smart_an的专栏 651

五、JAVA NIO(三种SocketChannel)

NIO 目录 文章目录五、JAVA NIO(三种Socket通道)1、ServerSocketChannel1.1、打开 ServerSocketChannel1.2、关闭 ServerSocketChannel1.3、监听新的连接1.4、阻塞模式1.4、非阻塞模式2、SocketChannel2.1、SocketChannel 介绍2.2、SocketChannel 特征:2.3、SocketChannel 的使用3、DatagramChannel3.1、打开 DatagramChannel3.2、接收

wang_luwei的博客 2795

Java NIO(六)--ServerSocketChannel与SocketChannel

一、SocketChanel 1、创建SocketChannel 有两种方法可以获取一个SocketChannel实例  1. 通过静态方法open打开一个 SocketChannel socketChannel = SocketChannel.open(); ServerSocketChannel接受一个连接请求后等到 SocketChannel socketChannel = se

idiandi的博客 2193

NIO Channel SocketChannel ServerSocketChannel

ServerSocketChannel:   ServerSocketChannel是一个基于通道的socket监听器。它同我们所熟悉的java.net.ServerSocket执行相同的基本任务,不过它增加了通道语义,因此能够在非阻塞模式下运行。用静态的open( )工厂方法创建一个新的ServerSocketChannel对象,将会返回同一个未绑定的java.net.ServerS...

dimei8552的博客 158

Java NIO 学习(四)--ServerSocketChannel与SocketChannel

本机要讲到的ServerSocketChannel、SocketChannel,与Java网络编程中的ServerSocket、Socket是非常相识,至少从使用方式上来看是这样,本质上都是TCP网络套接字,只是多了“channel”;

智公博客的专栏 1万+

JAVA NIO[ServerSocketChannel与SocketChannel]实现服务端客户端通信

最近在学习网络编程,我相信,除了做游戏的,IM的程序员们,其他的后端开发估计对于网络编程都挺薄弱,所以决定补一补网络编程,以及为了更好的学习Netty。下面是简单得使用ServerSocketChannel、SocketChannel和Selector做一个简单的服务端和客户端通信。ServerSocketChannel和SocketChannel都将注册到Selector中,然后...

Howinfun的博客 2429

NIO之SocketChannel,SocketChannel ,DatagramChannel解读

(1)SocketChannel 就是 NIO 对于非阻塞 socket 操作的支持的组件,其在 socket 上 封装了一层,主要是支持了非阻塞的读写。同时改进了传统的单向流 API,,Channel同时支持读写。(2)socket 通道类主要分为 DatagramChannel、SocketChannel 和 ServerSocketChannel,它们在被实例化时都会创建一个对等 socket 对象。

一个菜鸡的博客 2701

Java NIO(六)SocketChannel、ServerSocketChannel

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

chenbin1991smile的博客 204

NIO SocketChannel、DatagramChannel、ServerSocketChannel的及其在阻塞与非阻塞模式下的使用

阻塞模式情况下:  SocketChannel、DatagramChannel、ServerSocketChannel和我们直接使用Socket、DatagramSocket、ServerSocket是一样的,没有接收/发送了数据就一直等待,直到接收/发送了数据才会执行后面的代码。 非阻塞模式: 三种网络通道分别讲解: (1)ServerSocketChannel非阻塞模式下:     ...

祁东握力的博客 2668

Socket的用法——NIO包下SocketChannel的用法

Socket属于IO的一种,nio提供了ServerSocketChannel和SocketChannel。普通Socket和NioSocket的区别:    普通Socket是客户端发出一次请求、服务端接收到后响应、客户端接收到服务端的响应才能再次请求。    NioSocket是引入了三个概念:Channel、Selector、Buffer。Buffer是将很多请求打包,一次性发出去,有Sel...

ycgslh的博客 2万+
上一篇: 通道之间的数据传输
下一篇: centos rocketmq4.8 单机 安装和使用
SOMECT
博客等级 码龄15年 11粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值