版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、用 Java 实现 Web 服务器来源 :不详 (2006-07-07 13:54:55一、 HTTP 协议的作用原理HTTP 协议的作用原理包括四个步骤:1. 连 接:Web 浏览器与 Web 服务器建立连接。 2. 请求:Web 浏览器通过 socket 向 Web 服务器提交请求。 3. 应答:Web 浏览器提交请求后,通过 HTTP传送给 Web 服务器。 Web 服务器接到请求后,进行事务处理,处 理结果又通过 HTTP 传回给 Web 浏览器,从而在 Web 浏览器上显示出所请求的页 面。 4. 关系连接:当应答 结束后, Web 浏览器与 Web 服务器必须断开,以保证其它 We
2、b 浏览器能够与 Web 服务器建立连接。二、用 Java 实现 Web 服务器的程序设计根据上述 HTTP 协议的作用原理,实现 GET 请求的 Web 服务器程序的方法如下:1. 创建 ServerSocket 类对象,监听端口 8080。这是为了区别于 HTTP 的标准 TCP /IP 端口 80而取的; 2. 等待、 接受客户机连接到端口 8080, 得到与客户机连接的 socket ; 3. 创建与 socket 关联的输入流 instream 和输入出流 outstream ;式 为:GET 路径/文件名 HTTP /1.0;4. 从与 socket 关联的输入流 instream
3、 中读取一行客户机提交的请求 信息,请求信息的格式为:GET 路径/文件名 HTTP /1.0;5. 从请求信息中获取请求类型。如果请求类型是 GET ,则从请求信息中获取所访问的 HTML 文件名。没有 HTML 文件名 时,则以 index.htm1作为文件名; 6. 如果 HTML 文件存在,则打开 HTML 文件,把 HTTP 头信息和 HTML 文件内容通过 socket 传回给 Web服务器, 然后关闭文件,否则发送错误信息给 Web 浏览器; 7. 关闭与相应 Web 浏览器连接的 socket 字。下面的程序是根据上述方法编写的,可实现多线程的 Web 服务器,以保证多个客户机
4、能同时与该 Web 服务器连接。/WebServer.java 用 Java 编写 Web 服务器public class WebServerpublic static void main(String argsint i=1,PORT=8080;ServerSocket server=null;Socketclient=null;tryserver=new ServerSocket(PORT;("Web Server is listening on port"+server.getLocalPort(;for(; client=server.accept(;/接受客户机的
5、连接请求new Connection Thread(client,i.start(;i +;/*Connnection Thread类完成与一个 Web 浏览器的通信*/class Connection Thread extends ThreadSocket client;/连接 Web 浏览器的 socket 字int counter;/计数器public Connection Thread(Socketcl,int cclient=cl;counter=c;public void run(/线程体tryString deskIP=client.getInetAddress(.toStrin
6、g(; /客户机 IP 地址int destport=client.getPort(;/客户机端口号("Connecction"+counter +" :connected to "+destIP +"on port" +destport +"." ;PrintStream outstream=new printStream (client.getOoutputStream(;DataInputStreaminstream +new DataInputStream (client.getInputStream(;S
7、tring inline=instream.readLine(;/读取 Web 浏览器提交的请求信息String filename=getfilename(inline;File file=new File (filename;if(file.exists(outstream.println("Content_Length:" +len ; outstream.println(""sendfile(outstream,file;/发送文件 outstream.flush(;else/文件不存在时String notfound="htmlhead
8、titleNot Found/title /headbodyhlError404-File notfound/hl /body /html" ;outstream.println("HTTP /1.0 404 no found"outstream.println("Content_Type:text /html" ;outstream.println ("Content_Length:" +notfound.length( +2 ; outstream.println(""outstream.printl
9、n(notfound;outstream.flush(;long m1=1;while(m10if(s.substring(0,3.equalsIgnoreCase("GET"return true;return false;/*获取要访问的文件名*/String getfilename(String sString f=s.substring(s.indexOf(+1 ;f=f.substring(0,f.indexOf(;tryif(f.charAt(0=/f=f.substring(1;catch(String IndexOutOfBoundsException eif(f.equals(""f="index.html"return f;/*把指定文件发送给 Web 浏览器*/void sendfile(PrintStream outs,File filetryDataInputStreamin=new DataInputStream(new FileInpu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度地质勘探现场录像记录合同4篇
- 2025年度智能办公系统开发与IT技术支持服务协议3篇
- 二零二五年度知识产权背景下的股权转让合同3篇
- 专业危化品运输委托合同书版B版
- 二零二五年度绿色家居装修绿植租赁与室内装饰服务协议4篇
- 2024西藏自治区建设工程施工合同范本
- 2024碎石原料供应链优化与升级合同
- 2023-2024学年高中信息技术选修2(浙教版2019)-网络基础-说课稿-2.2-网络体系结构与TCPIP协议
- 2025年度智能家居产品贴牌代工及销售合同4篇
- 二零二五年度毛纱产业创新发展基金投资合同4篇
- 市政道路工程交通疏解施工方案
- 2024年部编版初中七年级上册历史:部分练习题含答案
- 拆迁评估机构选定方案
- 床旁超声监测胃残余量
- 上海市松江区市级名校2025届数学高一上期末达标检测试题含解析
- 综合实践活动教案三上
- 《新能源汽车电气设备构造与维修》项目三 新能源汽车照明与信号系统检修
- 2024年新课标《义务教育数学课程标准》测试题(附含答案)
- 医院培训课件:《静脉中等长度导管临床应用专家共识》
- 中国国际大学生创新大赛与“挑战杯”大学生创业计划竞赛(第十一章)大学生创新创业教程
- 钢管竖向承载力表
评论
0/150
提交评论