IO相关知识点

IO主要分为三部分;1.java网络编程2.阻塞IO 3.NIO

 

java网络编程

1..基础知识

     ip地址:ip地址用来识别网络中的一个通讯实体,可以是一台主机,也可以是一台打印机,在ip协议的网络中传输数据,必须使用ip地址来标识,传输数据就像是写信,每个信上都写上了收件人和寄件人,同理每个数据包也标明了发送方和接收方的ip

端口号:一个通讯实体可以有很多通信程序来提供网络服务,每个程序用端口号标识,一个端口号只能对应一个通讯程序

2.tcp/udp协议

3.URL

互联网统一资源定位符

4.InetAddress

java提供的代表ip地址的类

 

 

Socket

  socket就像桥梁一样,连接两个地方,桥有很多,socket也有很多种,常用的是基于TCP/IP的

socket,是套接字编程,这只是网络编程的一个api套件,实际对应传输层及以上的东西,不是协议,只是个编程接口

1.创建socket实例

IO相关知识点

如图是想建立两个主机之间的应用通信

2.客户端链接

IO相关知识点

代码如下:

IO相关知识点

3.服务端连接

IO相关知识点

代码如下:

IO相关知识点

创建了ServerSocket对象,绑定端口,调用accert方法监听请求,然后就一直处于阻塞状态

4.socket总结

IO相关知识点

1.java的IO接口

1)基于字节操作的IO接口

InputStrem  OutputStream

2)基于字符操作的IO接口

Reader  Writer

3)基于磁盘操作的IO接口

File...

4)基于网络操作的IO接口

Socket(Socket不在IO包下,但是可以为为IO的一部分)

2.阻塞IO的通信模型

IO相关知识点

每当有客户端连接的时候,服务端都会启动一个线程去接受请求

缺点:1.当客户端很多时,需要创建大量的线程来处理请求,每个线程都占用栈空间和CPU时间,消耗大量资源;2.阻塞会导致频繁的上下文切换,加重CPU负担

3.总结

阻塞式IO俗称BIO

IO相关知识点

NIO

1.工作原理

IO相关知识点

一个专门的线程来处理所有IO操作

2.通信模型

在客户端和服务都都维护了一个selector,各自向里面放事件,读事件和写事件,在放置事件和读取事件的时候需要轮训

3.实例

客户端代码:

IO相关知识点

IO相关知识点