




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年高中地理上学期第4周 晨昏线、地方时教学设计 湘教版必修1
- 23 祖先的摇篮 教学设计-2024-2025学年统编版语文二年级下册
- Module 9 Unit 2 Happy birthday (教学设计) -2024-2025学年外研版(一起)英语一年级上册
- 2023七年级数学上册 第五章 一元一次方程2 求解一元一次方程第3课时 解含分母的一元一次方程教学设计 (新版)北师大版
- Unit 4 My Favourite Subject Section A 1a~Pronunciation教学设计 2024-2025学年人教版英语七年级上册
- 《9的乘法口诀》(教学设计)-2024-2025学年二年级上册数学苏教版
- 2024秋八年级数学上册 第十五章 分式15.3 分式方程 2解分式方程教学设计(新版)新人教版
- 《乒乓变奏曲》(教案)-2023-2024学年人教版(2012)音乐二年级下册
- Unit2 English and Chinese Get started (教学设计)-2024-2025学年教科版(2024)英语三年级上册
- 茶道养生企业创业
- 生物质能源综合利用项目可行性分析报告
- 《印度文化与历史:大学人文课程教案》
- 第11课《山地回忆》公开课一等奖创新教学设计
- 【MOOC】《学术交流英语》(东南大学)章节中国大学慕课答案
- 《建筑基坑工程监测技术标准》(50497-2019)
- 第04章 计算机辅助设计-1
- 2022年00642《传播学概论》复习资料
- 双室浮动床除盐水系统程序控制设计
- 铝合金化学成分表
- 村级基本公共卫生考核评分表
- 外拉线内悬浮抱杆分解组塔计算
评论
0/150
提交评论