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实例

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

2.客户端链接

代码如下:

3.服务端连接

代码如下:

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

4.socket总结

1.java的IO接口

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

InputStrem  OutputStream

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

Reader  Writer

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

File...

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

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

2.阻塞IO的通信模型

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

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

3.总结

阻塞式IO俗称BIO

NIO

1.工作原理

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

2.通信模型

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

3.实例

客户端代码:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值