概述
原标题:Java-彻底弄懂netty-程序员深入Nio之SocketChannel基础-知识铺
知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累。不占太多时间,不停的来唤醒你记忆深处的知识点。
一、Socket与NioSocket
1.1 普通Socket 一个连接独占一个线程。
1.2 NioSocket 引入selector一个线程对应多个连接。
1.3 普通socket资源利用率不高,如果某个socket延迟,服务端对应的线程就会等待,服务器线程是有限的,也很昂贵的资源。
1.4 优化普通socket也只是有限的的提升,如下图:
本质上还是一个socket对应一个socket
1.5 NioSocket 引入三个概念。
Buffer:合并多个请求包,一次性发送。
Selector:多路选择器,可以应对多个客户端请求。
Channel:真正处理和响应的是通道。
二、SocketChannel 是什么
2.1 SocketChannel是一个socket套接字。
2.2 连接网络协议:TCP。
2.3 主要处理网络I/O通道。
2.4 实现可选择通道或被多路复用通道。
三、SocketChannel 特点
3.1 已连接的socket无法创建SocketChannel。
3.2 open只是创建channel通道,并没进行网络连接。
3.3 connect连接远程地址
3.4 无连接channel不能进行I/O(read(),write())
抛出异常 NotYetConnectedException
isConnected():测试下网络是否建立连接。
isConnectedPending():连接是否在信道上发起。
finishConnect():非阻塞下需要该接口进行通道确认。
3.5 SocketChannel 支持两种I/O:阻塞与非阻塞
3.6 SocketChannel 特定参数如下:
Nagle算法在网络带宽有限,引出来的算法。当下网络带宽宽裕,不需要,一般该算法是默认关闭的,所以目前的TCP/IP协议栈默认将Nagle算法关闭,即通过SO_NODELAY = 1。
感觉有收获给点个赞,给小编动力。如果没有收获,请评论区狠狠的批评,给小编更大的动力。返回搜狐,查看更多
责任编辑:
最后
以上就是大气导师为你收集整理的netty连接nbiot_Java-彻底弄懂netty-程序员深入Nio之SocketChannel基础-知识铺的全部内容,希望文章能够帮你解决netty连接nbiot_Java-彻底弄懂netty-程序员深入Nio之SocketChannel基础-知识铺所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复