1.如何启动?
main方法是程序的入口,tomcat也不例外,查看tomcat源码,发现main是在Bootstrap 类中的;
2.如何建立连接?
要通讯,必须要建议socket连接,我们需要使用哪种socket,是根据它使用的哪种协议进行判断的。tcp协议or udp协议?http协议本身属于tcp协议,因此我们选择的socket是基本tcp协议的socket。在tomcat中,StandardServer 中 await() 方法具体实现了 socket连接。
3.使用哪种io模式?
a:BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高;
b:NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器;
c:AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器
d:tomcat 使用了aio,bio、nio三种io模式,它们不同的应用各自发挥其优点。这里通过bio简单实现一个tomcat服务。
代码示例:
package com.io;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.nio.ByteBuffer;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
public class ChannelSocketTest {
public void start() throws IOException {
// 1.新建NIO通道
ServerSocketChannel ssc = ServerSocketChannel.open();
ssc.configureBlocking(false); // 设置为非阻塞状态
ServerSocket socket = ssc.socket();
Syst