面试题答案
一键面试SocketChannel
- 特点:
- 面向流的双向通道,既可以读也可以写。
- 支持非阻塞模式,可以在不阻塞线程的情况下进行I/O操作。
- 与TCP协议相关,用于建立TCP连接进行可靠的数据传输。
- 适用场景:适用于需要可靠数据传输的场景,如HTTP服务器、RPC框架等,客户端与服务器之间基于TCP协议进行数据交互。
ServerSocketChannel
- 特点:
- 用于监听新的TCP连接,是服务器端接受客户端连接的通道。
- 同样支持非阻塞模式,在非阻塞模式下,
accept()
方法不会阻塞线程,而是立即返回,若有新连接则返回对应的SocketChannel
,否则返回null
。 - 管理多个客户端连接时,配合选择器(Selector)可实现多路复用I/O,提高服务器性能。
- 适用场景:主要用于服务器端开发,监听特定端口,等待客户端连接,如Web服务器、即时通讯服务器等监听客户端TCP连接请求的场景。
DatagramChannel
- 特点:
- 面向无连接的数据报通道,基于UDP协议,用于发送和接收UDP数据包。
- 支持非阻塞模式,可在非阻塞状态下进行数据的发送和接收。
- 不保证数据的可靠传输,可能会出现丢包、乱序等情况,但传输速度相对较快,资源开销较小。
- 适用场景:适用于对实时性要求较高、能容忍少量数据丢失的场景,如视频流传输、音频流传输、网络游戏等,这些场景更注重数据的实时性而非绝对的准确性。