- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
下载可编辑
专业资料 精心整理
HYPERLINK "/blog/512380" Java Socket现实简单的HTTP服务
一个简单的用 Java Socket 编写的 HTTP 服务器应用, 演示了请求和应答的协议通信内容以及给客户端返回 HTML 文本和二进制数据文件(一个图片), 同时展示了 404, 200 等状态码.
??首先运行这个程序,然后打开Web浏览器,键入http://localhost,则这个程序能够显示出浏览器发送了那些信息并且向浏览器返回一个网页和一副图片, 并测试同浏览器对话.??当浏览器看到 HTML 中带有图片地址时, 则会发出第二次连接来请求图片等资源.??这个例子可以帮您理解 Java 的 HTTP 服务器软件是基于 J2SE 的 Socket 等软件编写的概念, 并熟悉HTTP 协议.??相反的用 Telnet 连接到已有的服务器则可以帮忙理解浏览器的运行过程和服务器端的返回内容.?????当用户在Web浏览器地址栏中输入一个带有http://前缀的URL并按下Enter后,或者在Web页面中某个以http://开头的超链接上单击鼠标,HTTP事务处理的第一个阶段--建立连接阶段就开始了.HTTP的默认端口是80.??随着连接的建立,HTTP就进入了客户向服务器发送请求的阶段.客户向服务器发送的请求是一个有特定格式的ASCII消息,其语法规则为:?
? < Method > < URL > < HTTP Version > <\r\n>? ? { <Header>:<Value> <\r\n>}? ? <\r\n>? ? { Entity Body }?
请求消息的顶端是请求行,用于指定方法,URL和HTTP协议的版本,请求行的最后是回车换行.方法GET,POST,HEAD,PUT,DELETE等.??在请求行之后是若干个报头(Header)行.每个报头行都是由一个报头和一个取值构成的二元对,报头和取值之间以":"分隔;报头行的最后是回车换行.常见的报头有Accept(指定MIME媒体类型),Accept_Charset(响应消息的编码方式),Accept_Encoding(响应消息的字符集),User_Agent(用户的浏览器信息)等.??在请求消息的报头行之后是一个回车换行,表明请求消息的报头部分结束.在这个之后是请求消息的消息实体(Entity Body).具体的例子参看httpRequest.txt.?
Web服务器在收到客户请求并作出处理之后,要向客户发送应答消息.与请求消息一样,应答消息的语法规则为:?
? < HTTP Version> <Status Code> [<Message>]<\r\n>? ? { <Header>:<Value> <\r\n> }?? ? <\r\n>? ? { Entity Body }?
应答消息的第一行为状态行,其中包括了HTTP版本号,状态码和对状态码进行简短解释的消息;状态行的最后是回车换行.状态码由3位数字组成,有5类:??
? 参看:HTTP应答码及其意义?? ??? ? 1XX 保留?? ? 2XX 表示成功?? ? 3XX 表示URL已经被移走?? ? 4XX 表示客户错误?? ? 5XX 表示服务器错误??
例如:415,表示不支持改媒体类型;503,表示服务器不能访问.最常见的是200,表示成功.常见的报头有:Last_Modified(最后修改时间),Content_Type(消息内容的MIME类型),Content_Length(内容长度)等.?
在报头行之后也是一个回车换行,用以表示应答消息的报头部分的结束,以及应答消息实体的开始.?
下面是一个应答消息的例子:? ? HTTP/1.0 200 OK? ? Date: Moday,07-Apr-97 21:13:02 GMT? ? Server:NCSA/1.1? ? MIME_Version:1.0? ? Content_Type:text/html? ? Last_Modified:Thu Dec 5 09:28:01 1996? ? Coentent_Length:3107? ??? ? <HTML><HEAD><TITLE></HTML>????? 在用Java语言实现HTTP服务器时,首先启动一个.ServerSocket在提供服务的端口上监听连接.向客户返回文本时,可以用 PrintWriter,但是如果返回二进制数据,则必须使用OutputStream.write(byte[])方法,返回的应答消息字符串可以
您可能关注的文档
- 《就英法联军远征我国致巴特勒上尉的信》教(学)案分析.doc
- 【设计研究院】[全国](7)2018年高考真题(理)分类汇编——直线和圆、圆锥曲线(教师版).doc
- 【数学】高考复习点拨:二项分布和超几何分布辨析.doc
- 2.16PF人格测试计分方法与因素分析.doc
- 5%水泥稳定级配碎石基层施工组织设计.doc
- 10kV配电线路故障率的分析与防范措施.doc
- 2.预拌混凝土企业质量管理体系·程序文件.doc
- 1000头(40T)养猪场废水处理方案设计2018年.8.doc
- 2015-2017年学年江苏徐州市高中二年级(下)期末数学试题(卷)(理科)(解析版)(1).doc
- 1999-2018同等学力经济学历年真题汇总.doc
文档评论(0)