1 实验目的
1) 掌握Java Socket编程应用;
2) 阅读HTTP协议相关规范;
3) 基于Java Socket构建简单的HTTP的客户端和服务器;
4) 构建支持并发的HTTP服务器。
资源在底部下载
2 实验内容
1) 阅读RFC1945和RFC2068文档。
了解HTTP/1.0和HTTP/1.1的相关规范和标准,对比HTTP/1.0和HTTP/1.1的区别。
2) 完善HTTP客户端代码。
代码Client.java和HTTPClient.java实现了基于命令行的HTTP客户端的GET请求的功能。将服务器地址(域名或IP地址)设置为启动参数,如www.nwpu.edu.cn,启动客户端后,将建立到服务器80端口的TCP连接,用户可通过控制台输入GET命令实现服务器资源的请求。
请完善HTTPClient中的processPutRequest方法使其支持PUT命令。为了简化操作,可直接将客户端运行环境的某文件(如face.jpg)PUT到服务器指定的路径,如:PUT /face.jpg HTTP/1.0。
提示:PUT请求时Header中必须包含“Content-Length”项。
3) 构建单线程的HTTP服务器。
编写HTTP服务器,创建一个端口号为80的套接字,并等待传入的请求。服务器只需成功地响应使用GET和PUT方法的请求,但对其他所有请求(有效的或无效的)的都应返回RFC指定的响应。在任何情况下确保服务器不会崩溃或挂起。
服务器的根目录,即http://<your-computer>.<your-domain>/ 应指向在命令行中传递给程序的目录。例如,根目录设置为服务器端c:\www目录,则当客户端请求GET /test/index.html时,服务器应向客户端发送文件C:\www\test\index.html来响应请求,如果此文件不存在,则返回404响应。
在成功的响应中,服务器应该指定至少两种MIME类型。服务器应该从文件的扩展名中推导出一个文件的MIME类型,例如,文件名以.htm或.html结尾的文件假定为text / html类型。服务器应至少识别HTML和JPEG文件,即文件扩展名分别为.htm和.jpg的文件。服务器必须能够将.jpg图像嵌入到HTML文档中。此时,一次只需为一个连接提供服务。也就是说,服务器是一个无限循环,读取请求并发出响应。
4) 将服务器修改为支持并发接收请求的模式。
Web服务器通常能够处理并发请求。并发请求指当一个请求未处理完时另外一个请求同时开始处理。请将前面步骤中建立的Web服务修改为支持并发接收请求的模式,可以采用Java多线程或线程池的方式。
该实验旨在通过Java Socket编程实现HTTP客户端和服务器,包括GET、PUT请求的支持,以及构建支持并发请求的Web服务器。实验内容包括阅读HTTP协议规范,完善HTTP客户端PUT请求功能,构建单线程和多线程HTTP服务器,服务器需要根据文件扩展名推断MIME类型并能处理HTML和JPEG文件。

被折叠的 条评论
为什么被折叠?



