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, 你就可以让他不断地监听从被监测的机器上发来的请求。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值