![](https://img-blog.csdnimg.cn/20201213162349780.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
从Socket到Netty
文章平均质量分 79
从基础的文件IO,SocketIO 到 IO模型 到Nett源码,掌握一个JAVA程序员应该懂的IO知识体系
edisonyuan
Be better every day!
展开
-
IO多路复用模型
NIO的问题上一节通过分析及测试BIO和NIO的原理与性能,虽然NIO胜过BIO,但是随着连接的增多,每次需要遍历的连接数增大,新建立连接的速度和IO读写的速度都在降低。随着历史长河的流动,IO多路复用模型被提出BIO模型,Server端处理每一个新的连接需要抛出新线程NIO模型,解决了多个线程的问题,可以在一个线程中处理多个连接,缺点在于每次遍历所有的连接,一个一个查看有没有数据到来,假设有10K个连接,实际有数据的只有10个,那9990次read是不必要的调用展望:如果应用程序只做一原创 2020-12-27 16:28:44 · 897 阅读 · 0 评论 -
BIO&NIO&C10K
前言Socket通信的步骤:1,Server端服务启动,得到fd,处于LISTEN状态;2,Client端服务启动,向Server端发起连接,建立连接的第一步是Server端内核和Client端内核进行三次握手,三次握手完成之后,连接放在BACKLOG队列中,等待Server调用accept;3,Server调用accept,得到新的fd,用于Server和Client交互数据;4,Server和Clinet read、write数据内核Socket函数 SOCK_NONBLOCK. SOC原创 2020-12-20 10:36:02 · 138 阅读 · 1 评论 -
Socket通信涉及的TCP常用参数
说明:涉及参数为TCP层配置参数,与具体语言无关Server端参数public static void main(String[] args) { try { ServerSocket server = new ServerSocket(); server.bind(new InetSocketAddress(9090), BACK_LOG); server.setReceiveBufferSize(RECEI.原创 2020-12-19 16:18:29 · 873 阅读 · 1 评论 -
代码&抓包看SOCKET通信的过程
测试环境10.188.40.230 部署SocketServer10.188.40.231 部署SocketClientJDK环境:jdk8运行代码Server端import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.InetSocketAddress;impo.原创 2020-12-13 21:45:11 · 995 阅读 · 0 评论 -
SocketIO基础
声明文中提到的应用程序特指JAVA应用程序本文涉及的Linux基础命令netstat -natp 查看端口相关信息lsof -p pid 查看某个进程打开的fd相关信息ls -l /proc/pid/fd 查看某个进程打开的fd相关信息什么是TCPTCP是一种面向连接的、可靠的传输协议Client(客户端)和 Server(服务端)建立连接需要经过三次握手,断开连接需要完成四次挥手什么是SocketLinux一切皆文件,Socket是其中一种文件类型ls -l..原创 2020-12-13 18:18:34 · 452 阅读 · 2 评论