网络编程/IO
文章平均质量分 85
网络编程和IO
Charge8
此随笔或为自己所写、或转载于网络。仅用于个人收集和备忘。共享:正如牛顿所说“如果我比别人看得远,那是因为我站在巨人的肩膀上”
展开
-
同步、异步与阻塞、非阻塞的理解
一、同步、异步与阻塞、非阻塞同步和异步都是基于应用程序所在操作系统处理IO事件所采用的方式,同步是应用程序要直接参与IO读写的操作。异步所有的IO读写交给搡作系统去处理,应用程序只需要等待通知。网上有许多I/O模型的相关文章,主要涉及四个概念,同步,异步,阻塞,非阻塞。有些文章将这四个作了两两组合,于是就有了:异步阻塞和异步非阻塞,可以明确的说,这完全是牵强之理解,无论<Unix网络编程>一书中所列的I/O模式,还是POSIX标准,都没有提这两个概念。异步就是异步!只有同步才有阻塞和非阻转载 2020-07-23 11:03:31 · 3736 阅读 · 4 评论 -
Java网络编程概念,简单Socket编程
一、计算机网路基础概念1、计算机网路 --百度百科 计算机网络,是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。 从逻辑功能上看,计算机网络是以传输信息为基础目的,用通信线路将多个计算机连接起来的计算机系统的集合,一个计算机网络组成包括...原创 2019-08-18 16:22:23 · 1675 阅读 · 0 评论 -
HTTP协议和URLConnection使用
一、HTTP协议简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,它是一种用于分布式、协作式和web应用系统的应用层协议。HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的RFC,其中最著名的是1999原创 2020-08-17 22:04:23 · 986 阅读 · 0 评论 -
Java IO流操作
在整个Java.io 包中最重要的就是5个类和一个接口。5个类指的是File、InputStream、OutputStream、Reader、Writer;一个接口指的是 Serializable。掌握了这些IO的核心操作那么对于Java中的IO体系也就有了一个初步的认识了。一、IO概述 IO(Input/Output):即输入和输出. 下图是...原创 2018-07-25 22:02:02 · 753 阅读 · 0 评论 -
基于TCP协议的Socket编程
一、基于TCP协议的网络编程1、TCP/IP是一种可靠的网络协议,它在通信的两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路; 一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路来进行通信;2、Socket编程主要是指基于TCP/IP协议的网络编程。Java对基于TCP/IP协议的网络通信提供了良好的封装;Java使用Socket对象来代表两端(服务器程序和客户端程序)的通信端口;并通过Socket产生的IO流来进行通信。其中 ServerSocket 类表示原创 2020-08-19 21:25:10 · 2340 阅读 · 0 评论 -
Java NIO核心三大组件Channel、Buffer和Selector(一)
一、BIO、NIO和AIO简介通常所说的 BIO 是相对于 NIO 来说的,BIO 也就是 Java 开始之初推出的 IO 操作模块。1、BIO(Blocking I/O)同步阻塞I/OBIO 就是传统的 java.io 包,它是基于流模型实现的,交互的方式是同步、阻塞方式,也就是说在读入输入流或者输出流时,在读写动作完成之前,线程会一直阻塞在那里,它们之间的调用时可靠的线性顺序。优点就是代码比较简单、直观;缺点就是 IO 的效率和扩展性很低,容易成为应用性能瓶颈。尤其是在网络编程中,瓶颈体原创 2020-07-26 20:38:37 · 537 阅读 · 0 评论 -
Java NIO核心三大组件Channel、Buffer和Selector(二)
Java NIO核心三大组件Channel、Buffer和Selector(一)二、组件SelectorSelector选择器 ,也可以翻译为 多路复用器。选择器允许单线程操作多个通道。用于检查一个或多个NIO Channel(通道)的状态是否处于可读、可写。从而可以实现单线程管理多个channels,也就是可以管理多个网络链接。Selector 是NIO相对于BIO实现多路复用的基础,Selector 运行单线程处理多个 Channel,如果你的应用打开了多个通道,但每个连接的流量...原创 2020-07-31 22:55:16 · 266 阅读 · 0 评论 -
NIO同步网络编程
NIO核心三大组件Channel、Buffer和Selector,传送门:Java NIO核心三大组件Channel、Buffer和Selector(一)Java NIO核心三大组件Channel、Buffer和Selector(二)NIO主要有:FileChannel 连接到文件的通道,它无法设置为非阻塞模式,它总是运行在阻塞模式下。 ServerSocketChannel 监听新进来的TCP连接的通道,对应前面的服务器端ServerSocket SocketChannel ...原创 2020-08-26 22:45:30 · 252 阅读 · 0 评论 -
NIO基于UDP协议的网络编程
UDP(User Datagram Protocol)协议是用户数据报协议的简称,也用于网络数据的传输。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。虽然 UDP 协议是一种不太可靠的协议,但有时在需要较快地接收数据并且可以忍受较小错误的情况下,UDP 会比TCP表现出更大的优势。UDP协议与TCP协议的简单对比:TCP协议:可靠,传输大小无限制,但是需要连接建立时间,差错控制开销大 UDP协议:不可靠,差错控制开销小,传输大小有限制,不需要建立连接。...原创 2020-08-31 22:16:01 · 846 阅读 · 0 评论 -
AIO异步网络编程
AIO (Asynchronous I/O) 异步非阻塞I/O 是 Java 1.7 之后的,,在java.nio包,AIO是是 NIO 的升级版本(所以AIO又叫NIO.2),提供了异步非堵塞的 IO 操作方式,异步 IO 是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作。新增了许多支持异步的类,主要有:AsynchronousFileChannel类是异步的方式处理本地文件的文件通道。 AsynchronousSo原创 2020-08-24 21:46:33 · 311 阅读 · 0 评论