计算机网络课程设计简单web服务器.pdf

上传人:wj 文档编号:3438475 上传时间:2023-05-05 格式:PDF 页数:11 大小:375.10KB
下载 相关 举报
计算机网络课程设计简单web服务器.pdf_第1页
第1页 / 共11页
计算机网络课程设计简单web服务器.pdf_第2页
第2页 / 共11页
计算机网络课程设计简单web服务器.pdf_第3页
第3页 / 共11页
计算机网络课程设计简单web服务器.pdf_第4页
第4页 / 共11页
计算机网络课程设计简单web服务器.pdf_第5页
第5页 / 共11页
计算机网络课程设计简单web服务器.pdf_第6页
第6页 / 共11页
计算机网络课程设计简单web服务器.pdf_第7页
第7页 / 共11页
计算机网络课程设计简单web服务器.pdf_第8页
第8页 / 共11页
计算机网络课程设计简单web服务器.pdf_第9页
第9页 / 共11页
计算机网络课程设计简单web服务器.pdf_第10页
第10页 / 共11页
计算机网络课程设计简单web服务器.pdf_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计算机网络课程设计简单web服务器.pdf

《计算机网络课程设计简单web服务器.pdf》由会员分享,可在线阅读,更多相关《计算机网络课程设计简单web服务器.pdf(11页珍藏版)》请在冰点文库上搜索。

计算机网络课程设计简单web服务器.pdf

风行下载2012正式版官方下载提供风行下载2012正式版官方下载计算机计算机网络网络课程设计报告课程设计报告专业:

网络工程学号:

0900380124学生姓名:

苏耀宗指导教师:

杨兵2012年3月2日风行下载2012正式版官方下载提供风行下载2012正式版官方下载简单简单WebWeb服务器的设计与实现服务器的设计与实现1.设计任务完成一个简单的WEB服务器的设计与实现,要求能够通过HTTPGET命令获得一个简单的HTML文件(可以带图片);开发平台:

windows7、eclipse、Java2.系统分析WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网页。

WWW的工作基于客户机/服务器计算模型,由Web浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(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文件名指出所访问的文件,HTTP/1.1指出Web浏览器使用的HTTP版本。

(3)应答:

Web浏览器提交请求后,通过HTTP协议传送给Web服务器。

Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。

例:

假设客户机与:

8000/index.html建立了连接,就会发送GET命令:

GET/index.htmlHTTP/1.1。

主机名为的Web服务器从它的文档空间中搜索文件index.html。

如果找到该文件,Web服务器把该文件内容传送给相应的Web浏览器。

为了告知Web浏览器传送内容的类型,Web服务器首先传送一些HTTP头信息,然后传送具体内容(即HTTP体信息),HTTP头信息和HTTP体信息之间用一个空行分开。

常用的HTTP头信息有:

HTTP1.1200OK这是Web服务器应答的第一行,列出服务器正在运行的HTTP版本号和应答代码。

代码“200OK”表示请求完成。

MIME_Version:

1.0风行下载2012正式版官方下载提供风行下载2012正式版官方下载它指示MIME类型的版本。

content_type:

类型这个头信息非常重要,它指示HTTP体信息的MIME类型。

如:

content_type:

text/html指示传送的数据是HTML文档。

content_length:

长度值它指示HTTP体信息的长度(字节)。

(4)关闭连接:

当应答结束后,Web浏览器与Web服务器必须断开,以保证其它Web浏览器能够与Web服务器建立连接。

3.总体设计根据上述HTTP协议的作用原理,实现GET请求的Web服务器程序的方法如下:

(1)创建ServerSocket类对象,监听端口默认为8000,可以通过服务器界面修改。

(2)等待、接受客户机连接到端口8000,得到与客户机连接的socket,运用多线程技术接收多个客户的请求,并进行响应;(3)创建与socket字相关联的输入流instream和输出流outstream;(4)从与socket关联的输入流instream中读取一行客户机提交的请求信息,请求信息的格式为:

GET路径/文件名HTTP/1.1(5)从请求信息中获取请求类型。

如果请求类型是GET,则从请求信息中获取所访问的HTML文件名。

没有HTML文件名时,则以index.html作为文件名;(6)如果HTML文件存在,则打开HTML文件,把HTTP头信息和HTML文件内容通过socket传回给Web浏览器,然后关闭文件。

否则发送错误页面error.html给Web浏览器;(7)关闭与相应Web浏览器连接的socket字。

由此,决定用java开发一个简单的服务器,带有简单的图形界面,可以设定服务器的端口号,并可随时启动和停止服务器。

能接受多个用户的请求,并进行响应,能显示请求和响应的情况。

外加一个时钟表,显示系统时间。

系统功能图如下:

风行下载2012正式版官方下载提供风行下载2012正式版官方下载4.详细设计用Java实现Web服务器的主要设计步骤及程序

(1)eclipse新建web服务器的java项目,具体如下图:

(2)设计主函数程序Main为主类,具体代码如下:

package;importjavax.swing.UIManager;publicclassMainpublicstaticvoidmain(Stringargs)try/界面风格UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName();catch(Exceptione1)newServerFrame();简单web服务器修改端口号开启、停止服务器显示请求、响应情况清空显示信息时钟多用户请求响应风行下载2012正式版官方下载提供风行下载2012正式版官方下载(3)设计Web服务器的图形界面ServerFrame为服务器的主界面类,用于构造服务器的界面。

服务端口可以修改相应的端口号,开始按钮和停止按钮实现服务器的开启与关闭,中间的文本域textArea显示客户的请求情况和服务器的响应情况,清空按钮用来清空文本域。

下方的TimeLabel显示系统当前时间。

主要代码如下:

publicclassServerFrameextendsJFrameimplementsActionListenerJPanelpanel=newJPanel();JLabelstate=newJLabel(关闭状态);JTextFieldportText=newJTextField(8000,8);JButtonstart=newJButton(开始,newImageIcon(images/start.gif);JButtonstop=newJButton(停止,newImageIcon(images/stop.gif);JButtonclear=newJButton(清空,newImageIcon(images/clear.gif);JTextAreatextArea=newJTextArea();JScrollPanejs=newJScrollPane(textArea);ServerSocketserver=null;Socketsocket=null;风行下载2012正式版官方下载提供风行下载2012正式版官方下载TimerLabeltime=newTimerLabel();intcouter=1;publicServerFrame()/初始化界面setIconImage(newImageIcon(images/top.gif).getImage();setTitle(简单Web服务器);setBounds(200,100,500,400);setLayout(newBorderLayout();add(panel,BorderLayout.NORTH);add(time,BorderLayout.SOUTH);panel.add(state);panel.add(newJLabel(服务端口:

);panel.add(portText);panel.add(start);panel.add(stop);panel.add(clear);stop.setEnabled(false);/刚开始,stop不可用start.addActionListener(this);stop.addActionListener(this);clear.addActionListener(this);add(js);textArea.setLineWrap(true);textArea.setEditable(false);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);publicvoidactionPerformed(ActionEvente)/按钮事件intport=Integer.parseInt(portText.getText();/获取文本作为端口号if(e.getSource()=start)/启动服务器state.setText(开启状态);start.setEnabled(false);/启动后,start不可用,stop可用stop.setEnabled(true);tryserver=newServerSocket(port);/创建服务器套接字textArea.insert(n服务器已开启n,0);/匿名内部类newThread()publicvoidrun()try/无限循环,用于接受多个客户请求while(true)风行下载2012正式版官方下载提供风行下载2012正式版官方下载socket=server.accept();/接受客户机连接,生成套接字textArea.insert(报告,收到请求:

+String.valueOf(couter+)+n,0);textArea.insert(时间:

+time.getTime()+n,0);newServerThread(socket,textArea).start();/启动线程,进行回复catch(Exceptione);.start();catch(Exceptione1)if(e.getSource()=stop)/停止服务器/关闭服务器套接字servertryif(server!

=null)server.close();textArea.insert(n服务器已关闭n,0);catch(Exceptione2)couter=1;/计数重置state.setText(关闭状态);stop.setEnabled(false);/设置按钮可用性start.setEnabled(true);JOptionPane.showMessageDialog(this,服务器成功关闭!

提示,JOptionPane.CLOSED_OPTION);if(e.getSource()=clear)/清空文本域textArea.setText();(4)设计接收线程类ServerThread继承与Thread类,使用多线程技术实现多客户请求,并进行相应主要代码如下:

publicclassServerThreadextendsThreadSocketsocket=null;JTextAreatextArea=null;publicServerThread(Socketsocket,JTextAreatextArea)风行下载2012正式版官方下载提供风行下载2012正式版官方下载this.socket=socket;this.textArea=textArea;publicvoidrun()finalStringCRLF=rn;BufferedReaderin=null;/输入流缓冲DataOutputStreamout=null;/数据输出流FileInputStreamfin=null;/文件输入流tryin=newBufferedReader(newInputStreamReader(socket.getInputStream();out=newDataOutputStream(socket.getOutputStream();Stringstring=in.readLine();/读取浏览器请求头部第一行StringTokenizerst=newStringTokenizer(string);/字符窜分割if(st.nextToken().equals(GET)/判断请求方式Strings=st.nextToken();/分割获取请求的文件名if(s.equals(/)/如果请求文件为空,返回主页面index.htmls=/index.html;Filefile=newFile(s.substring

(1);textArea.insert(用户:

+socket.getInetAddress().toString().substring

(1)+端口:

+String.valueOf(socket.getPort()+n,0);textArea.insert(请求:

+string+n,0);if(file.exists()/如果找到文件textArea.insert(n回复成功,亲n,0);else/如果没找到请求文件,则返回error.html页面file=newFile(error.html);textArea.insert(n悲剧啊,没找到页面n,0);/输出响应头部信息out.writeBytes(HTTP/1.0200OK+CRLF);if(file.getName().endsWith(.jpg)out.writeBytes(Content-Type:

image/jpeg+CRLF);if(file.getName().endsWith(.gif)out.writeBytes(Content-Type:

image/gif+CRLF);out.writeBytes(CRLF);风行下载2012正式版官方下载提供风行下载2012正式版官方下载/输出响应体部信息tryfin=newFileInputStream(file);catch(FileNotFoundExceptione)System.out.println(找不到);bytebuffer=newbyte1024;intbytes=0;while(bytes=fin.read(buffer)!

=-1)out.write(buffer,0,bytes);catch(IOExceptione)e.printStackTrace();finally/关闭流tryif(in!

=null)in.close();if(out!

=null)out.close();if(fin!

=null)fin.close();catch(Exceptione2)(5)简单的TimeLabel类该类直接继承JLabel类,主要功能是获取系统当前时间,并显示在JLabel上,其实例作为一个时钟表。

具体代码省略。

5.运行调试在服务器的根目录下,新建多个html页面,作为一个简单站点,具体如下:

风行下载2012正式版官方下载提供风行下载2012正式版官方下载运行打开服务器按开始按钮开启服务,端口号默认为8000,可自行修改:

在浏览器上输入http:

/180.136.66.123:

8000/index.html,结果如下:

风行下载2012正式版官方下载提供风行下载2012正式版官方下载服务器对客户请求进行回复(可清空显示的客户请求及响应信息):

6.设计总结此次课程设计完成了一个简单的Web服务器,程序明了,有简单清新的服务器界面,能真正实现web服务,对多客户的请求进行相应的回复。

但是其中还有一些小错误,这是自己对Java的理解和应用不够成熟所致。

通过这次课程设计,是我进一步了解web服务器与客户端的交互情况,加强了对HTTP传输协议的理解,学会网络编程的不少知识。

在这个网络技术快速发达的年代,web服务有着举足轻重的地位,我们每天上网都离不开它。

因此,掌握web开发技术对我未来的发展必定有很大帮助。

这次课程设计,也让我深深体会到自己的Java道路还很漫长,以后必须多多练习,学以致用。

参考文献参考文献参考文献参考文献1孙卫琴.Java网络编程精解.北京:

电子工业出版社,2007.32Y.DanielLiangJava语言程序设计基础篇北京:

机械工业出版社,2008年2月1日

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2