欢迎来到天天文库
浏览记录
ID:20731146
大小:471.21 KB
页数:12页
时间:2018-10-15
《计算机网络课程设计简单web服务器》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、计算机网络课程设计报告专业:网络工程学号:0900380124学生姓名:苏耀宗指导教师:杨兵2012年3月2口简单Web服务器的设计与实现1.设计任务完成一个简单的WEB服务器的设计与实现,要求能够通过HTTPGET命令获得一个简争的HTML文件(可以带图片);开发平台:windows7、eclipse、Java2.系统分析WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网页。WWW的工作基于客户机/服务器计算模型,由Web浏览器(客户机)和Web服务器(服务器)构成,两荞之阿采用
2、超文本传送协议(HTTP)进行通信。HTTP协议是基于TCP/IP协议之上的协议,是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。HTTP协议的作用原理乜括四个步骤:(1)迕接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。(2)请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为:GET路径/文件名HTTP/1.1文件名
3、指出所访问的文件,HTTP/1.1指出Web浏览器使用的HTTP版木。(3)应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页而。例:假设客广机与www.syz.com:8000/index.html建立了连接,就会发送GET命令:GET/index.htmlHTTP/1.1o主机名力www.syz.com的Web服务器从它的文把空间屮搜索文件index.html。如果找到该文件,Web服务器把该文
4、件內容仿送给相应的Web浏览器。为了告知Web浏览器传送内容的类型,Web服务器首先传送一些HTTP尖信息,然后传送具体内容(即HTTP体信息),HTTP头信息和HTTP体信息之间用一个空行分幵。常用的HTTP头信息省:①HTTP1.1200OK这是Web服务器应答的第一行,列出服务器正在运行的HTTP版本号和应答代码。代码“200OK”表示请求完成。②MIME_Version:1.0它指示MIME类型的版本。①content—type:类型这个头信息非常重要,它指乐HTTP体信息的MIME笑型。如:content_ty
5、pe:text/html指示传送的数据是HTML文档。②content_length:长度值它指示HTTP体信息的长度(字节)。(4)关闭连接:当应答结束后,Web浏览器与Web服务器必须断开,以保证其它Web浏览器能够与Web服务器建立连接。1.总体设计根据上述HTTP协议的作用原理,实现GET请求的Web服务器程序的方法如卜、(1)创建ServerSocket类对象,监听端口默认为8000,吋以通过服务器诉面修改。(2)等待、接受客户机迮接到端口8000,得到与客户机迮接的socket,运用多线程技术接收多个客户的请
6、求,并进行响应;(3)创建与socket字相失联的输入流instream和输出流outstream;(4)从与socket关联的输入流instream中读取一行客户机提交的请求信息,请求信息的格式为:GET路径/文件名HTTP/1.1(5)从请求信息屮获取请求类型。如果请求类型是GET,则从请求信息屮获取所访问的HTML文件名。没有HTML文件名时,则以index.html作为文件名;(6)如果HTML文件存在,则打幵HTML文件,把HTTP头信息和HTML文件
7、A)容通过socket传回给Web浏览器,然AS•关闭文件
8、。否则发送错误页面eiror.html给Web浏览器;(7)关闭与相应Web浏览器连接的socket字。由此,决定用java开发一个简单的服务器,带有简单的图形界面,可以设定服务器的端口号,并可随时启动和停止服务器。能接受多个用户的请求,并进行响应,能显示请求和响皮的情况。外加一个时钟表,显示系统时间。系统功能图如下:简单web服务器修开改启、端停u止号服务器多显用示户请请求、求响响应应情况1.详细设计用Java实现Web服务器的主要设计步骤及程序(1)eclipse新建web服务器的java项口,具体如下图:Iz7we
9、b.限务器'src'ffisyz.comI>[7]Main.javaI>[JjServerFrame.javaI>[JjServerThread.javaI>[JjTimerLabel.java0城JRESystemLibrary[JavaSE-1.6](2)设计主函数程序Main为主类,具体代码如下:package
此文档下载收益归作者所有