在Java基础中IO讲述了对于文件的读写操作;其实在网络编程中IO操作也是尤为重要的一环,比如Socket通信,协议服务器等;
本文主要讲述IO,NIO与Netty的概念和简要的思想:
IO
IO是基于流模型实现的BIO(阻塞IO)。
IO按处理数据类型的不同可分为字节流和字符流,按流向可分为输入流和输出流;网上大多流传的一张分类图:
但是我们本文所讲的主要是网络编程中的IO,下面我们用一段代码解释看:
package com.youbaaa.io.javaio;import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;public class IOServer {
public static void main(String[] args) throws Exception {
ServerSocket serverSocket = new ServerSocket(8888); new Thread(() -> {
for (; ; ) {
try {
Socket socket = serverSocket.accept(); new Thread(() -> {
byte[] bytes = new byte[1024]; try {
int let; InputStream inputStream = socket.getInputStream(); while ((let = inputStream.read(bytes)) != -1) {
System.out.println(new String(bytes, 0, let)); } } catch (IOException e) {
e.printStackTrace(); } }).start(); } catch (IOException e) {
e.printStackTrace(); } } }).start(); }}
package com.youbaaa.io.javaio;import java.io.IOException;import java.net.Socket;import java.util.Date;import java.util.concurrent.Executor;import java.util.concurrent.Executors;public class IOClient {
public static void main(String[] args) throws IOException {
Executor executor = Executors.newFixedThreadPool(100); Thread thread = new Thread(() -> {
Socket socket = null; try {