摘要
首先对HTTP协议做了简要的介绍,然后介绍了用Java创建的一个非阻塞的HTTP服务器。
关键词
HTTP协议,TCP协议,非阻塞,URL,URI,缓冲区,线程池
当用户打开浏览器,输入一个URL地址,就能接收到远程HTTP服务器发送过来的网页。浏览器就是常见的HTTP客户程序。如图1所示,HTTP客户程序必须先发出一个HTTP请求,然后才能接收到来自HTTP服务器的响应。
图1 HTTP客户程序与HTTP服务器的通信过程
HTTP客户程序和HTTP服务器分别由不同的软件开发商提供,它们都可以用任意的编程语言编写。用VC编写的HTTP客户程序能否与用Java编写的HTTP服务器顺利通信呢?答案是肯定的。HTTP协议严格规定了HTTP请求和HTTP响应的数据格式,只要HTTP服务器与客户程序都遵守HTTP协议,就能彼此看得懂对方发送的消息。
1.HTTP请求格式
HTTP协议规定,HTTP请求由三部分构成,分别是:请求方法、URI、HTTP协议的版本;请求头(Request Header);请求正文(Request Content)。
下面是一个HTTP请求的例子:
POST /hello.htm HTTP/1.1
Accept: image/gif, image/jpeg, */*
Referer: http://localhost/login.htm
Accept-Language: en,zh-cn;q=0.5
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: localhost
Content-Length: 43
Connection: Keep-Alive
Cache-Control: no-cache
username=weiqin&password=1234&submit=submit
|