`

Tomcat工作原理(第一章)【自己翻译的,应该有很多不当之处,见笑了,呵呵】

 
阅读更多
    web服务器,通常也被称为HTTP服务器。web服务器通过HTTP协议与客户端进行通信,而客户端通常是web浏览器。基于Java的web 服务器,用了两个非常重要的类:java.net.Socket和java.net.ServerSocket。通信是通过HTTP消息来完成的。所以本章就以HTTP协议和两个非常重要的类开始。
    HTTP协议,允许web服务器和浏览器在Internet上发送和接收信息。它是一个请求(request)和回应(response)的协议。客户端请求一些文件,服务器回应请求。HTTP使用可靠的TCP链接,TCP的默认端口是80。HTTP的最初版本是0.9、之后是1.0、还有1.1。
    在HTTP 协议中,通常都是通过客户端来建立一个链接并发送一个HTTP请求来启动一个事务的,web服务器是不会和客户端联系或者是创建一个回调链接(服务器是不会主动和客户端联系的)。不管是客户端还是服务器都可以提前终止一次链接。
    一个HTTP request请求由四个部分组成:
    (1)Method-URI-Protocol/Version
    (2)Request headers
    (3)Entity body.
    (4)空白行:在HTTP头和HTTP体之间

     每一个HTTP请求可以使用HTTP标准中定义的多种请求方法中的任意一种。请求的方法有:GET、POST、HEAD、DELETE、TRACE、OPTIONS、PUT。GET和POST是在互联网中最常用的请求方式。

一个HTTP Response的组成类似与一个HTTP Request,Response体是response的html内容本身。
 
     Socket
     一个socket就是一次网络链接的终端,socket允许从网络上读和向网络上写数据。两个位于不同机器上的软件应用程序,可以通过建立链接,然后发送和接收字节流而实现彼此的通信,你需要知道对方应用程序的socket的ip和端口。在java中socket的表现形式是java.net.Socket类。
   你可以用Socket类中的任意一个构造器,去创建一个socket,其中一个构造器。其中一个构造器,接收主机的名字和端口。
   public Socket (java.lang.String host, int port);host是远程应用机器的名字或ip地址,端口是远程应用程序的端口,比如通过80端口去连接yahoo.com,我们可以建立如下Socket对象:
new Socket ("yahoo.com", 80); 一旦建立了socket对象,就可以用它来发送和
接收字节流。
    去发送字节流,首先必须调用Socket 类的getOutputStream方法,去获得一个java.io.OutputStream对象。发送文本信息给远程应用程序,可以从返回的OutputStream对象中建立一个java.io.PrinWriter对象。
    接收另一端返回的字节流,可以调用Socket class的getInputStream方法,返回了一个java.io.InputStream.
   要从web 服务器上获取一个正确的response,需要发送一个符合http协议的请求.
   ServerSocket class
   Socket类代表了一个客户端的socket。ie,就是一个你可以随时创建的socket,不论是什么只要你想连接到远程服务。现在如果你想实现一个服务器,比如HTTP服务器,或者FTP服务器,你需要一个不同的途径。因为你的服务必须永远的健壮,它不知道客户端什么时候会试图链接服务器。为了让你的服务器在任何时候都处于待命状态。ServerSocket是一个 server socket的实现。server socket 的职责是等待客户端的链接请求。一旦服务器端的socket 得到一个链接请求,它就会创建一个Socket实例去处理和客户端的通信。
    要建立一个server socket,我们需要用ServerSocket中提供的四个构造器中的一个。定义server socket监听的ip和端口。
一旦你拥有了一个ServerSocket, 你就可以让他不断地监听从被监测的机器上发来的请求。


  

   
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics