java实现web服务器_百度文库_第1页
java实现web服务器_百度文库_第2页
java实现web服务器_百度文库_第3页
java实现web服务器_百度文库_第4页
java实现web服务器_百度文库_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论