学习 Doug Lea 大神写的——Scalable IO in Java
网络服务
Web services、分布式对象等等都具有相同的处理结构
- Read request
- Decode request
- Process service
- Encode reply
- Send reply
基础的网络设计
每一个处理的 handler 都在各自的线程中处理。
代码示例
public class Server01 implements Runnable {
@Override public void run() {
try {
ServerSocket serverSocket = new ServerSocket(9898);
while (!Thread.interrupted()) {
// serverSocket.accept() 会阻塞到有客户端连接,之后 Handler 会处理
new Thread(new Handler(serverSocket.accept())).start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static class Handler implements Runnable {
private final Socket socket;
Handler(Socket socket) {
this.socket = socket;
}
@Override public void run() {
try {
byte[] input = new byte[1024];
// 假设能全部读取出来
socket.getInputStream().read(input);
byte[] output = process(input);
socket.getOutputStream()