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();
                }
            }
        }
    }
}


 

LabVIEW小白福音:手把手教你用NI采集卡搭建振动信号采集系统(附源码和避坑指南) 本文为LabVIEW初学者提供详细的NI采集卡振动信号采集系统搭建指南,涵盖硬件连接、驱动安装、信号处理及性能优化等关键步骤。特别针对振动信号采集系统中的常见问题提供解决方案,并附源码和避坑指南,帮助用户快速上手并避免常见错误。 阅读详情

相关推荐

华为ITR流程实战指南:从设计到落地的全流程解析(附完整方案下载)

本文深度解析华为ITR流程从设计到落地的全流程实战指南。ITR不仅是高效处理客户问题的“救火”系统,更是驱动产品改进、预防问题的企业“免疫系统”。文章详细拆解了流程设计的四步走策略、三层技术支持体系的组织保障、以闭环改进为核心的考核激励,并探讨了如何借鉴其精髓,优化自身问题管理,实现从被动响应到主动服务的跨越。

y2z3a4b5c的博客 377

NIO学习之ServerSocketChannel和SocketChannel

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

m0_53157173的博客 3784

基于STM32 HAL库的L298N四驱电机PWM调速与方向控制实战

本文详细介绍了基于STM32 HAL库驱动L298N电机控制板实现四驱小车PWM调速与方向控制的实战方法。涵盖硬件连接、GPIO与定时器配置、PWM生成、方向控制逻辑及电源管理等核心内容,并提供代码优化与常见问题解决方案,帮助开发者快速实现高效稳定的电机控制。

jump7的博客 222

NioServerSocketChannel

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

qq_44587855的博客 1122

Western blot (WB) 灰度分析进阶指南:ImageJ 高效定量技巧与实战优化

本文详细介绍了使用ImageJ进行Western blot灰度分析的进阶技巧,包括批量处理、背景校正和疑难条带处理等实战优化方法。通过自动化宏脚本和动态背景校正,显著提升分析效率和准确性,特别适合科研人员处理复杂WB数据。

weixin_42557830的博客 899

产品经理如何运用AI提升工作效率

AI技术的应用为产品经理的工作流程带来了显著的效率提升。从需求收集到产品上线,AI可以在多个阶段提供智能化支持,帮助产品经理更好地理解用户需求、优化产品设计、提高开发和测试效率。在未来,随着AI技术的不断发展,产品经理将能够更加高效地管理产品生命周期,为用户提供更优质的产品体验。应用 | AI + 千行百业欢迎关注我的后续博文,我将分享更多关于人工智能、自然语言处理和计算机视觉的精彩内容。

不想宅的冷同学 1336

NIO编程之ServerSocketChannel用法详解

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

一起的远方的博客 3983

LVGL移植教程(正点原子)

学习正点原子LVGL移植教程,根据视频教程写的博客

papalila的博客 939

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

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

javaThinker的专栏 2909

利用Spm12进行fMRI数据分析:从预处理到结果解读的完整指南

本文提供了利用SPM12进行fMRI数据分析的完整流程指南,涵盖从数据预处理、统计建模到结果解读的全过程。详细介绍了在MATLAB环境下使用SPM12图形界面完成头动矫正、空间标准化等关键步骤的操作方法与避坑技巧,帮助神经科学研究者和心理学研究者高效处理功能磁共振成像数据并产出可靠结果。

weixin_29079671的博客 452

【Unity】NGUI下载与导入

Unity3D插件NGUI的下载和导入。

Get your hands dirty 3万+

【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万+

GEE数据融合——Landsat (collection 2,level 2 )4、5、7、8、9长时间序列影像数据融合和视频导出分析

长时间序列影像数据融合是指将Landsat影像数据集合2级2(Level 2)中的4、5、7、8和9这五个卫星的数据进行融合。具体来说,这包括将同一地点的多个卫星影像数据进行处理和整合,以产生一个单一的、具有更高质量的影像产品。在长时间序列影像数据融合中,首先需要对不同卫星的影像数据进行校正,以消除不同卫星之间的光谱差异、辐射度问题和几何纠正误差等。然后,通过使用融合算法,将多个卫星的影像数据进行组合,以生成一张全新的、高质量的合成影像。

此星光明博客 1733

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

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java NIO 之 ServerSocketChannel SocketChannel

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

wojiushimogui的博客 1813

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Socket和ServerSocket/SocketChannel与ServerSocketChannel区别

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

luzhensmart的专栏 2953

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

《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、付费专栏及课程。

余额充值