Java高级面试-IO
一、java网络编程
1.基础知识
1)ip地址和端口号
2)tcp/udp协议
3)URL同一资源定位器
4)InetAddress
2.socket
1)创建socket实例
2)客户端链接
①创建Socket对象
②连接建立后,通过输出流向服务端发送请求信息
③通过输入流获取服务器响应的信息
④关闭响应资源
3)服务端连接
①创建ServerSocket对象,绑定监听端口
②通过accept()方法监听客户端请求
③连接建立后,通过输入流读取客户端发送的请求信息
④通过输出流向客户端发送信息
⑤关闭相关资源
4)总结
①创建ServerSocket和Socket
②打开连接到Socket的输入/输出流
③按照协议对Socket进行读/写操作
④关闭输入输出流、关闭Socket
二、阻塞IO
1.java的I/O接口
1)基于字节操作的I/O接口(InputStream\OutputStream)
2)基于字符操作的I/O接口(Writer\Reader)
3)基于磁盘操作的I/O接口(File)
4)基于网络操作的I/O接口(Socket)
2.阻塞IO的通信模型
1)通信模型示意图
3.总结
1)BIO数据在写入OutputStream或者从InputStream读取时都有可能会阻塞
2)当前一些需要大量HTTP长连接的情况
3)需要另外一种新的I/O操作方式
三、NIO
1.工作原理
2.通信模型
3.实例
客户端:
服务器端: