计算机网络课程设计简单web服务器资料下载.pdf
- 文档编号:16119999
- 上传时间:2022-11-20
- 格式:PDF
- 页数:11
- 大小:375.10KB
计算机网络课程设计简单web服务器资料下载.pdf
《计算机网络课程设计简单web服务器资料下载.pdf》由会员分享,可在线阅读,更多相关《计算机网络课程设计简单web服务器资料下载.pdf(11页珍藏版)》请在冰豆网上搜索。
(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类型。
如:
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(关闭状态);
/设置按钮可用性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;
Buffe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 课程设计 简单 web 服务器