一个基于java的web服务器实现主要使用这两个重要的类:java.net.Socket和java.net.ServerSocket,并通过HTTP消息进行通信。
HTTP请求
一个HTTP请求包括三个组成部分:
1.方法—统一资源标示符(URI)—协议/版本
2.请求的头部
3.主体内容
GET / HTTP/1.1
Host: 127.0.0.1:8080
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
HTTP响应
类似于HTTP请求,一个HTTP响应也包括三个组成部分:
1.方法-统一资源标示符(URI)-协议/版本
2.响应的头部
3.主体内容
下面是一个HTTP响应的例子:
HTTP/1.1 200 OK
Server: IBM/4.0
Date: Sat, 6 Nov 2013 13:13:00 GMT
Content-Type: text/html
Last-Modified: Sat, 5 Jan 2013 13:13:12 GMT
Content-Length: 112
socket类
套接字是网络连接的一个端点。套接字使得一个应用可以从网络中读取和写入数据。放在两个不同的计算机上的两个应用可以通过连接发送和接受字节流。为了从你的应用发送一条信息到另一个应用,你需要指导另一个应用的IP地址和套接字端口。
ServerSocket类
Socket类代表一个客户端套接字,即任何时候你想连接到一个远程服务器应用的时候你构造的套接字。如果是一个服务器程序依靠Socket类是行不通的。你的服务器必须随时待命,因为客户端何时想你发送请求是不知道的。
ServerSocket和Socket不同,服务器套接字的角色是等待来自客户端的连接请求。