本章介绍Java Web服务器是如何运行的。从中可以知道Tomcat是如何工作的。
基于Java的Web服务器会使用java.net.Socket类和java.net.ServerSocket类这两个类,并通过发送HTTP消息进行通信。
因此,本章先介绍HTTP协议和这两个类。然后介绍一个简单的Web服务器。
1.1 HTTP协议
HTTP请求和相应信息
略。
1.2 Socket类
1.2.1 Socket类
套接字是网络连接的端点。套接字可以使程序从网络中读取和写入数据。客户端和服务器端通过IP和端口号识别彼此的套接字并连接,然后接收和发送数据。在Java中,套接字由java.net.Socket类实现。
public Socket(String host, int port);//参数host是远程主机的名称或IP地址,参数port是连接远程应用程序的端口号。 // 例如,想要通过80端口连接yahoo.com,可以使用以下语句创建Socket对象: new Socket("yahoo.com". 80);
一旦成功创建了Socket类的实例,就可以使用该实例发送或接收字节流。
1.2.2 ServerSocket类
Socket类是一个客户端套接字。当想要和服务器的程序连接时创建Socket套接字,因此服务器套接字必须时刻待命,它不知道客户端应用程序会在什么时候发起连接。所以ServerSocket类和Socket类并不相同。ServerSocket类的构造函数需要指明IP地址和服务器套接字侦听的端口号。
ServerSocket类的其中一个构造函数的签名如下:
public SeverSocket (int port, int backLog, InetAddress bindingAddress);
创建了ServerSocket实例后,实例可以一直等待传入的连接请求,通过调用ServerSocket.accept()方法协调N个客户端的套接字的连接请求。当接收到连接请求后,该方法会返回一个Socket实例。可以使用该Socket对象与客户端应用程序进行字节流的发送/接收。
1.3 应用程序
针对以上知识点,做一个简单的web服务器。遇到的坑都在注释里说明了。GitHub地址:https://github.com/tzzt01/myTomcat.git