目录
1.ServerSocket 服务端步骤
2.Socket 客户端步骤
3.NIO核心是什么
4.ByteBuffer: 是类还是接口(类)
1.子类有哪些
2.写出8个方法是什么,分别代表什么含义
5.Channel接口
1.主要实现类,列举出3个
2.特点是什么
6.获取通道有哪3种方式
7.nio实现文件拷贝思路是什么
8、请问TCP和UDP协议有什么差别?
1、请问哪个协议是一种可靠的传输层协议?()
A、TCP
B、UDP
C、IP(不负责保证可靠性)
D、ARP(根据IP地址获取物理地址的协议)
参考答案:A
2、请问哪个协议可以用于Internet上的控制文件的双向传输?()
A、TCP
B、UDP
C、IP
D、FTP
参考答案:D
3、一台计算机上可以运行多个服务,服务用什么来区别?()
A、IP地址
B、HOST名字
C、端口号
D、用户名
参考答案:C
4、Java语言API中使用哪两个类实现TCP协议通讯编程?()
A、Socket和ServerSocket
B、Reader和Writer
C、URL和Connection
D、Client和Server(客户端 和 服务器)
参考答案:A
5、ServerSocket类中哪个方法可以接收客户端的请求?()
A、receive
B、accept
C、connect
D、get
参考答案:B
简答题
1.ServerSocket 服务端步骤
1.ServerSocket 服务端
1.ServerSocket serverSocket=new ServerSocket(8888);
2.调用 accept()方法监听客户端发来的请求:Socket socket=serverSocket.accept();
3.开管:得到输入和输出流
InputStream in=socket.getInputStream();
OutoutStream out=socket.getOutputStream();
4.使用输入流得到信息,使用输出流发信息
2.Socket 客户端步骤
1.Socket socket=new Socket(IP,8888);
2.开管:得到输入和输出流
InputStream in=socket.getInputStream();
OutoutStream out=socket.getOutputStream();
3.使用输出流发信息(socket.shutdownOutput()输出-1 标志),使用输入流得到信息
3.NIO核心是什么
核心API
1.Channel 通道 打开到IO设备的连接 负责传输
2.Buffer 缓冲区 存储数据
主要有三大核心部分:Buffer、Channel和Selector。
其中Buffer可以被看成是一个容器,其本质是一个数组缓冲区,读入或写出到Channel中的所有对象都会先放在Buffer中;Channel是对传统的输入/输出的模拟,在NIO中,所有的数据都需要通过通道流的形式传输;Selector(选择器)用于监听多个通道的事件(例如:连接打开、数据到达等),主要用于多线程处理。
4.ByteBuffer: 是类还是接口(类)
1.子类有哪些
DirectByteBuffer、DirectByteBufferR、HeapByteBuffer、HeapByteBufferR
2.写出8个方法是什么,分别代表什么含义
-
1.分配指定大小的缓冲区:ByteBuffer.allocate(len);//以字节为单位
2.存数据:put():存入数据到缓冲区
3.取数据:get():获取缓冲区的数据
4.flip() :切换到都读数据模式 position归0
5.rewind():重复读数据,position归0
6.clear():清空缓冲区,但是缓冲区的数据还存在,处于"被遗忘"的状态
7.mark():标记
8.reset():恢复到mark的位置
5.Channel接口
1.主要实现类,列举出3个
1).FileChannel:用于读取、写入、映射和操作文件的通道。
2).DatagramChannel:通过 UDP 读写网络中的数据通道。
3).SocketChannel:通过 TCP 读写网络中的数据。
4).ServerSocketChannel:可以监听新进来的 TCP 连接,对每一个新进来的连接都会创建一个 SocketChannel。
2.特点是什么
1、 双向:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的
2 、异步读写:通道可以异步地读写
3 、数据通过 Buffer 读写:通道中的数据总是要先读到一个 Buffer,或者总是要从一个Buffer 中写入
6.获取通道有哪3种方式
(1)Java 针对支持通道的类提供了getChannel()方法:
本地IO:
(1) FileInputStream
(2) FileOutputStream
(3) RandomAccessFile
网络IO:
(1) Socket
(2) ServerSocket
(3) DatagramSocket
(2)在JDK 1.7以上版本中的 NIO.2 针对各个通道提供了静态方法open() 。
(3)在JDK 1.7以上版本中的 NIO.2 的Files 工具类的 newByteChannel() 。
7.nio实现文件拷贝思路是什么
1.创建输入流和输出流
2.通过输入流得到输入流的通道
3.通过输出流得到输出流的通道
4.用通道的transferTo方法进行数据的传输
5.关闭通道
6.关闭输入输出流
8、请问TCP和UDP协议有什么差别?
1.ServerSocket 服务端
1.ServerSocket serverSocket=new ServerSocket(8888);
2.调用 accept()方法监听客户端发来的请求:Socket socket=serverSocket.accept();
3.开管:得到输入和输出流
InputStream in=socket.getInputStream();
OutoutStream out=socket.getOutputStream();
4.使用输入流得到信息,使用输出流发信息
1.Socket socket=new Socket(IP,8888);
2.开管:得到输入和输出流
InputStream in=socket.getInputStream();
OutoutStream out=socket.getOutputStream();
3.使用输出流发信息(socket.shutdownOutput()输出-1 标志),使用输入流得到信息
3.NIO核心是什么
核心API
1.Channel 通道 打开到IO设备的连接 负责传输
2.Buffer 缓冲区 存储数据
主要有三大核心部分:Buffer、Channel和Selector。
其中Buffer可以被看成是一个容器,其本质是一个数组缓冲区,读入或写出到Channel中的所有对象都会先放在Buffer中;Channel是对传统的输入/输出的模拟,在NIO中,所有的数据都需要通过通道流的形式传输;Selector(选择器)用于监听多个通道的事件(例如:连接打开、数据到达等),主要用于多线程处理。
4.ByteBuffer: 是类还是接口(类)
1.子类有哪些
DirectByteBuffer、DirectByteBufferR、HeapByteBuffer、HeapByteBufferR
2.写出8个方法是什么,分别代表什么含义
-
1.分配指定大小的缓冲区:ByteBuffer.allocate(len);//以字节为单位
2.存数据:put():存入数据到缓冲区
3.取数据:get():获取缓冲区的数据
4.flip() :切换到都读数据模式 position归0
5.rewind():重复读数据,position归0
6.clear():清空缓冲区,但是缓冲区的数据还存在,处于"被遗忘"的状态
7.mark():标记
8.reset():恢复到mark的位置
5.Channel接口
1.主要实现类,列举出3个
1).FileChannel:用于读取、写入、映射和操作文件的通道。
2).DatagramChannel:通过 UDP 读写网络中的数据通道。
3).SocketChannel:通过 TCP 读写网络中的数据。
4).ServerSocketChannel:可以监听新进来的 TCP 连接,对每一个新进来的连接都会创建一个 SocketChannel。
2.特点是什么
1、 双向:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的
2 、异步读写:通道可以异步地读写
3 、数据通过 Buffer 读写:通道中的数据总是要先读到一个 Buffer,或者总是要从一个Buffer 中写入
6.获取通道有哪3种方式
(1)Java 针对支持通道的类提供了getChannel()方法:
本地IO:
(1) FileInputStream
(2) FileOutputStream
(3) RandomAccessFile
网络IO:
(1) Socket
(2) ServerSocket
(3) DatagramSocket
(2)在JDK 1.7以上版本中的 NIO.2 针对各个通道提供了静态方法open() 。
(3)在JDK 1.7以上版本中的 NIO.2 的Files 工具类的 newByteChannel() 。
7.nio实现文件拷贝思路是什么
1.创建输入流和输出流
2.通过输入流得到输入流的通道
3.通过输出流得到输出流的通道
4.用通道的transferTo方法进行数据的传输
5.关闭通道
6.关闭输入输出流
8、请问TCP和UDP协议有什么差别?
核心API
1.Channel 通道 打开到IO设备的连接 负责传输
2.Buffer 缓冲区 存储数据
主要有三大核心部分:Buffer、Channel和Selector。
其中Buffer可以被看成是一个容器,其本质是一个数组缓冲区,读入或写出到Channel中的所有对象都会先放在Buffer中;Channel是对传统的输入/输出的模拟,在NIO中,所有的数据都需要通过通道流的形式传输;Selector(选择器)用于监听多个通道的事件(例如:连接打开、数据到达等),主要用于多线程处理。
1.子类有哪些
DirectByteBuffer、DirectByteBufferR、HeapByteBuffer、HeapByteBufferR
2.写出8个方法是什么,分别代表什么含义
-
1.分配指定大小的缓冲区:ByteBuffer.allocate(len);//以字节为单位
2.存数据:put():存入数据到缓冲区
3.取数据:get():获取缓冲区的数据
4.flip() :切换到都读数据模式 position归0
5.rewind():重复读数据,position归0
6.clear():清空缓冲区,但是缓冲区的数据还存在,处于"被遗忘"的状态
7.mark():标记
8.reset():恢复到mark的位置
5.Channel接口
1.主要实现类,列举出3个
1).FileChannel:用于读取、写入、映射和操作文件的通道。
2).DatagramChannel:通过 UDP 读写网络中的数据通道。
3).SocketChannel:通过 TCP 读写网络中的数据。
4).ServerSocketChannel:可以监听新进来的 TCP 连接,对每一个新进来的连接都会创建一个 SocketChannel。
2.特点是什么
1、 双向:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的
2 、异步读写:通道可以异步地读写
3 、数据通过 Buffer 读写:通道中的数据总是要先读到一个 Buffer,或者总是要从一个Buffer 中写入
6.获取通道有哪3种方式
(1)Java 针对支持通道的类提供了getChannel()方法:
本地IO:
(1) FileInputStream
(2) FileOutputStream
(3) RandomAccessFile
网络IO:
(1) Socket
(2) ServerSocket
(3) DatagramSocket
(2)在JDK 1.7以上版本中的 NIO.2 针对各个通道提供了静态方法open() 。
(3)在JDK 1.7以上版本中的 NIO.2 的Files 工具类的 newByteChannel() 。
7.nio实现文件拷贝思路是什么
1.创建输入流和输出流
2.通过输入流得到输入流的通道
3.通过输出流得到输出流的通道
4.用通道的transferTo方法进行数据的传输
5.关闭通道
6.关闭输入输出流
8、请问TCP和UDP协议有什么差别?
DirectByteBuffer、DirectByteBufferR、HeapByteBuffer、HeapByteBufferR
-
1.分配指定大小的缓冲区:ByteBuffer.allocate(len);//以字节为单位
2.存数据:put():存入数据到缓冲区
3.取数据:get():获取缓冲区的数据
4.flip() :切换到都读数据模式 position归0
5.rewind():重复读数据,position归0
6.clear():清空缓冲区,但是缓冲区的数据还存在,处于"被遗忘"的状态
7.mark():标记
8.reset():恢复到mark的位置
5.Channel接口
1.主要实现类,列举出3个
1).FileChannel:用于读取、写入、映射和操作文件的通道。
2).DatagramChannel:通过 UDP 读写网络中的数据通道。
3).SocketChannel:通过 TCP 读写网络中的数据。
4).ServerSocketChannel:可以监听新进来的 TCP 连接,对每一个新进来的连接都会创建一个 SocketChannel。
2.特点是什么
1、 双向:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的
2 、异步读写:通道可以异步地读写
3 、数据通过 Buffer 读写:通道中的数据总是要先读到一个 Buffer,或者总是要从一个Buffer 中写入
6.获取通道有哪3种方式
(1)Java 针对支持通道的类提供了getChannel()方法:
本地IO:
(1) FileInputStream
(2) FileOutputStream
(3) RandomAccessFile
网络IO:
(1) Socket
(2) ServerSocket
(3) DatagramSocket
(2)在JDK 1.7以上版本中的 NIO.2 针对各个通道提供了静态方法open() 。
(3)在JDK 1.7以上版本中的 NIO.2 的Files 工具类的 newByteChannel() 。
7.nio实现文件拷贝思路是什么
1.创建输入流和输出流
2.通过输入流得到输入流的通道
3.通过输出流得到输出流的通道
4.用通道的transferTo方法进行数据的传输
5.关闭通道
6.关闭输入输出流
8、请问TCP和UDP协议有什么差别?
1).FileChannel:用于读取、写入、映射和操作文件的通道。
2).DatagramChannel:通过 UDP 读写网络中的数据通道。
3).SocketChannel:通过 TCP 读写网络中的数据。
4).ServerSocketChannel:可以监听新进来的 TCP 连接,对每一个新进来的连接都会创建一个 SocketChannel。
2.特点是什么
1、 双向:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的
2 、异步读写:通道可以异步地读写
3 、数据通过 Buffer 读写:通道中的数据总是要先读到一个 Buffer,或者总是要从一个Buffer 中写入
6.获取通道有哪3种方式
(1)Java 针对支持通道的类提供了getChannel()方法:
本地IO:
(1) FileInputStream
(2) FileOutputStream
(3) RandomAccessFile
网络IO:
(1) Socket
(2) ServerSocket
(3) DatagramSocket
(2)在JDK 1.7以上版本中的 NIO.2 针对各个通道提供了静态方法open() 。
(3)在JDK 1.7以上版本中的 NIO.2 的Files 工具类的 newByteChannel() 。
7.nio实现文件拷贝思路是什么
1.创建输入流和输出流
2.通过输入流得到输入流的通道
3.通过输出流得到输出流的通道
4.用通道的transferTo方法进行数据的传输
5.关闭通道
6.关闭输入输出流
8、请问TCP和UDP协议有什么差别?
1、 双向:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的
2 、异步读写:通道可以异步地读写
3 、数据通过 Buffer 读写:通道中的数据总是要先读到一个 Buffer,或者总是要从一个Buffer 中写入
(1)Java 针对支持通道的类提供了getChannel()方法:
本地IO:
(1) FileInputStream
(2) FileOutputStream
(3) RandomAccessFile
网络IO:
(1) Socket
(2) ServerSocket
(3) DatagramSocket
(2)在JDK 1.7以上版本中的 NIO.2 针对各个通道提供了静态方法open() 。
(3)在JDK 1.7以上版本中的 NIO.2 的Files 工具类的 newByteChannel() 。
7.nio实现文件拷贝思路是什么
1.创建输入流和输出流
2.通过输入流得到输入流的通道
3.通过输出流得到输出流的通道
4.用通道的transferTo方法进行数据的传输
5.关闭通道
6.关闭输入输出流
8、请问TCP和UDP协议有什么差别?
1.创建输入流和输出流
2.通过输入流得到输入流的通道
3.通过输出流得到输出流的通道
4.用通道的transferTo方法进行数据的传输
5.关闭通道
6.关闭输入输出流
| TCP协议 • TCP是面向连接的协议, 在正式收发数据前, 必须和对方建立可靠的连接, 所以速度会 慢在连接中传输大数据量; • 通信前必须建立连接, 效率稍低; • 通过三次握手机制连接, 四次挥手机制断开连接, TCP提供IP环境下的数据可靠传输, 保证数据无差错的、 按照顺序的进行传输; • TCP使用字节流模式发送数据; • TCP适用对可靠性要求高的应用环境; 如: 打电话,文件的传送. |
| UDP协议 • UDP是面向无连接的协议, 不与对方建立连接, 而是直接就发送数据包, 相对速度快; • 因为不需要建立连接, 所以速度快; • 因为无连接, UDP的传输是不可靠的, 不保证数据正确, 不保证顺序等, 也可能丢包; • UDP使用数据报模式; • 将数据极其源和目的封装为数据包, 不需要建立连接; • 每个数据包大小限制在64K中; • UDP适用于一次只传送少量数据、 对可靠性要求不高的应用环境; 如: 人说话、 飞秋、 凌波、 CS等 |
| TCP | UDP | |
| 是否连接 | 面向连接 | 无连接 |
| 传输可靠性 | 可靠的 | 不可靠的 |
| 应用场景 | 传输少量数据 | 大量数据 |
| 速度 | 慢 | 快 |



