基于java的高效兼容http服务器的研究及实现内容摘要:
套接字类)提供的重要函数有 getIAddress( ), getPort( ), getInputStream( ), 和 close( )。 分别产生用于获得信宿机的地址、信宿机端口号、获得输入流、获得输出流、关闭套接字。 ServerSocket 类(服务器套接字类)的重要函数有:getIAddress( ), getLocalPort( ), accept( )和 close( ),分别用于获得信宿机的 Inter 地址、本地端口、监听和关闭套接字。 ServerSocket 类实现了 TCP 服务器插口。 它提供两种构造函数指定服务器插口所用的端口,以便监听到连接请求。 利用 Accept( )方法引发服务器插口监听并等待,一旦连接就返回一个实例。 自定义类包括( 1) HttpServer 类(服务器类),( 2) ReThead(线程重用类),( 3) HttpProcess(一个接口类)。 此外还包括各个类的请求处理 类 3个: HttpFile(静态文件处理) , HttpCGI( CGI处理) ,HttpException(出错处理);以及数据流处理 2 个:HttpInputstream(数据输入流)和 HttpOutputstream(数据输出流)。 9 HTTP Request Http 服务器 初始化 HTTPConfig 初始化 HTTPLog 初始化 HTTPConverter 当浏览器 连接时建立 浏览器 连接 分析器 建立连 接信息 HTTPMessageHeaders HTTPInfo 发回 响应和 对象 HTTPGetHand HTTPHead HTTPHandler 建立 HTTPResponse 生成请求的对象 HTTPFileObject HTTPProcessObject 建立相应处理器 图七 重要类的交互 10 (二)﹑ 服务器总体设计 1﹑总体设计的关键点 根据 HTTP 工作原理,在这个设计中抓住了几个关键点:( 1)持续监听。 根据 TCP/IP,作为 服务器端进行监听。 在这个设计中,采用了一个永真的循环,等待客户的连接请求。 ( 2)可以同时接受多个用户的连接请求。 每个用户拥有自己独立的线程。 ( 3)实现了线程的重用性。 线程重用服务可以自动收集可重用的线程,以免过的的创建与销毁线程增加系统的负担,提高了系统的效率。 2﹑模块设计 把 Http 服务器分成两个组成模块:客户请求处理模块和响应生成发送模块,其中客户请求处理模块负责接收客户的连接,分析请求中的各个协议参数,此外还负责调用响应生成发送模块。 而响应生成发送模块的任务就是根据对客户请求的分析的结果查找资源,生 成响应和发送响应。 ( 1)﹑客户请求处理模块的任务就是负责监听系统的端口,以获取客户机到达本机的连接。 当获得一个连接请求时,就把这一连接所建立的套接字连接交给一个负责客户请求处理程序 —— Client 类处理这一个客户的请求,之后程序继续监听等待下一个客户的连接。 在一个Client 对象建立之后,它就把其在初始化时获得的一个 Socket 对象的输入流重定向给一个 Request 对象,使其能通过 Request 类提供的接口方法获取这一用户请求的相关参数,如 URL 的组成请求方法,所指文件以及协议版本等数据。 然后把这一个 Request 对象连同 Socket 对象的输 出 流 传 递 给 一 个 ResourceHandler 类 的 实 例 , 由 这 一 个ResourceHandler 对象完成生产发送对用户请求的响应。 主要由三个部分组成:①守护程序:一个 HttpServer 类的实例对象;②客户处理程 11 6 5 4 3 2 1 总 控程序 守护程序 客户处理程序 请求分析程序 序:一个 Client 用户类,由 HttpServer 对象负责建立其实例和执行其运行线程;③请求分析程序:一个 Request 用户类,由 Client 对象初始化其对象实例,用于分析客户请求中的协议参数(如下 图八 )。 其中,1—— 调用; 2—— Socket 对象; 3—— Socket 对象; 4—— Socket 对象输入流; 5—— Request 对象; 6—— Socket 对象的输入流和 Request 对象。 Request 对象是指经分析的客户请求。 图八 请求处理模块 ( 2)﹑响应生成发送模块实现的功能就是从客户请求程序中接受一个 Request 对象和一个标识一个用户连接的客户 Socket 对象的输入流( HttpInputStream)对象。 通过 Request 对象中获得客户请求的协议参数,查找客户请求指定的资源,根据查找的结果,生成相应的响应,并把生成的响应写入到指定的 HttpInputStream 对象中,其操作结果就是把响应送往客户。 包含了以下对象: ResourceHandler 对象(响应产生发送处理)、 SCManager(响应的状态码管理)对象、 StatusCode 对象(状态码管理)、 MimeType 对象(媒体类型描述处理),通过相互调用协调,共同完成模块的功能(如图六)。 其中: 1—— Socket 对象的输入流和 Request 对象; 2—— 文件名; 3—— 文件描述; 4—— 状态码; 5——响应生成模块 12 6 5 4 3 2 1 响应生成发送 程序 状态码管理 程序 媒体类型识别程序 文件系统 7 状态码相关描述; 6—— 文件名; 7—— 媒体类型描述。 图九 响应生成发送模块 3﹑ HTTP 服务器各类之间关系 在 Http 服务器的设计中, Httpserver 是主类,提供了程序的入口,打开 ServerSocket 类,并且接受客户端的连接。 对于每个连接将创建一个新的 Httpserver 对象去处理客户端的请求,并且启动一个新的线程去执行该处理。 HttpInputstream 类对于请求信息进行分析。 HttpProcessor 类则提供了真正处理的接口,它分别被 HttpFile 类,HttpCGI 类, HttpException 类 来 实 现。 最 后 将 响 应 信 息 由HttpOutputStr。基于java的高效兼容http服务器的研究及实现
相关推荐
dows 7; ( 2)开发工具: eclipse; ( 3)编程语言: Java 语言; 可行性的分析 可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。 要达到这个目的,必须分析几种主要的可能解法的利弊,从而判断原定的系统规模和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。 因此
一个独立的站点 ,提供的功能有限 ,用户不能详细的了解商品的有关信息 ,不能快捷地查询商品 ,无法满足学生实际交易中的需求。 校园二手物品交易平台为在校学生提供一个供需平台 ,学生可以将自己不用的东西放在网上 ,也可在网上找到自己需要的东西 ,物美价廉 ,达到双赢 . 构建高校二手交易平台响应了党的十七大“节能 减排”的号召,体现了可持续发展的要求,将二手商品充分合理的利用,不仅减少了资源浪费
开发工具。 自从 1995年正式问世以来, Java的快速发展已经让整个 Web世界发生了翻天覆地的变化。 在早期, Java比较多的用在浏览器上,插入到网页中 (即是 Java Applet程序 ),成为最灵活、最强大的网页多媒体的载体,但由于 Java 虚拟机相对于个人电脑而言,有占用资源大,安全性相对较差等缺点, Applet逐渐的被后起之秀 Flash所替代,但随着 Java
............................. 39 致 谢 ................................................................................................................................ 40 基于 Java的购物网站的设计与实现 1 第 1 章 绪 论
ner { Box baseBox,boxv1,boxv2。 JLabel 标题。 JButton 确认 ,取消。 TextArea 条款。 TextField t1,t2,t3。 Register() { 标题 =new JLabel(英汉词典新用户注册 )。 确认 =new JButton(确认 )。 确认 .addActionListener(this)。 取消 =new
是未经过精心维护的非商业软件。 即使是作为操作系统的各种版本的 Windows 也时常会发生许多类型的错误和漏洞。 本聊天系统程序对于初涉此领域的毕业设计课题来说,尤其在开始初期,感觉逻辑复杂,难以控制,因此至今还有许多未能解决的缺陷。 目前本聊天系统还有待完善的功能列表如下: ( 1)因为设想中是在显示聊天信息的地方点击说话人的账号就可以直接与其私聊,但是也实现不了这个功能