当前位置:文档之家› Java HTTP协议编程实验报告

Java HTTP协议编程实验报告

广州大学学生实验报告 开课学院及实验室:电子楼418A 室 2014年 11 月 27 日 学院 计算机科学与教育软件学院 年级、专业、班 网络工程113班 姓名 小玉 学号 实验课程名称 网络编程 成绩 实验项目名称 HTTP协议编程 指导老师 樊志平 一、实验目的 WEB服务器也称为WWW服务器,主要功能是提供网上信息浏览服务,是目前使用最广泛的服务。HTTP协议是万维网中使用最广泛的协议,也是Web服务消息传递的主要传输协议。本实验通过设计和实现简单的WEB服务器和浏览器,使学生熟练掌握HTTP协议的编程,并对WEB服务器的工作原理有比较深入的了解。此外,本实验需要学生能结合TCP套接字编程、多线程编程、输入输出流编程和面向对象分析与设计技术加以解决实际问题,因此实验能提高学生综合运用所学知识并解决实际问题的能力。

二、使用仪器、器材 微机一台 操作系统:WinXP 编程软件:eclipse

三、实验内容及原理 实现简单的Web浏览器和web服务器。

四、实验过程原始数据记录 package experiment03; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.EditorKit; import javax.swing.text.html.*;

import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.util.*; public class HttpClient extends JFrame { private JPanel jpNorth = new JPanel(); private JLabel lblAddress = new JLabel("请输入网址:"); private JTextField jtfAddress = new JTextField("http://"); private JButton btnConnect = new JButton("连接"); private JButton btnPrior = new JButton("后退"); private JButton btnNext = new JButton("前进"); private JPanel jpCenter = new JPanel(); private JEditorPane jepContent = new JEditorPane(); private JScrollPane jsp = new JScrollPane(jepContent); //记录历史网址 ArrayList history = new ArrayList(); private int currentIndex = -1; public HttpClient() { this.setLayout(new BorderLayout()); this.add(jpNorth, BorderLayout.NORTH); jpNorth.setLayout(new FlowLayout()); jpNorth.add(lblAddress); jtfAddress.setPreferredSize(new Dimension(300,25)); jpNorth.add(jtfAddress); jpNorth.add(btnConnect); jpNorth.add(btnPrior); jpNorth.add(btnNext); //设置内容区域 this.add(jpCenter,BorderLayout.CENTER); jpCenter.setLayout(new BorderLayout()); jpCenter.add(jsp,BorderLayout.CENTER); EditorKit editKit = jepContent.getEditorKitForContentType("text/html");

jepContent.setEditorKit(editKit); jepContent.setEditable(false);

//设置事件处理程序 btnConnect.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { try { if(jtfAddress.getText().trim().isEmpty()) return; jepContent.setPage(jtfAddress.getText()); history.add(jtfAddress.getText()); currentIndex=history.size()-1; } catch (IOException e1) { e1.printStackTrace(); } } }); //前进按钮事件 btnNext.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { if(currentIndex == -1 || currentIndex==history.size()-1) return; currentIndex++; try { jepContent.setPage(history.get(currentIndex)); jtfAddress.setText(history.get(currentIndex)); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } }); //后退按钮事件 btnPrior.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { if(currentIndex<=0) return; currentIndex--; try { jepContent.setPage(history.get(currentIndex)); jtfAddress.setText(history.get(currentIndex)); } catch (IOException e1) { e1.printStackTrace(); } } }); //设置超级链接 jepContent.addHyperlinkListener(new HyperlinkListener(){ @Override public void hyperlinkUpdate(HyperlinkEvent e) { if(e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { URL dest = e.getURL(); try { jepContent.setPage(dest); history.add(jtfAddress.getText()); currentIndex=history.size()-1; jtfAddress.setText(dest.toString()); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } });

} public static void main(String[] args) { HttpClient httpClient = new HttpClient(); httpClient.setSize(600, 400); httpClient.setLocation(300, 300); httpClient.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); httpClient.setTitle("HTTP浏览器"); httpClient.setVisible(true); } }

五、实验结果及分析

HTTP 是一种请求/响应式的协议。一个客户机与服务器建立连接后,发送一个请求给服务器;服务器接到请求后,给予相应的响应信息。

当用户要访问网络中的某个网页时,大致要经过以下几个步骤: 1. 用户首先要确定网页文件所在的URL(统一资源定位符,也就是网页在网络上的家庭住址,通过这个地址就可以找到这个网页)如www.cnblogs.com 2. 浏览器向DNS(域名服务器)发出请求,告诉DNS说:"我要把www.cnblogs.com转化为它所定义的IP地址",这里可以简单把DNS理解为一个字典,知道域名就可以知道域名对于的IP地址,他们有这个一个映射的关系 3. DNS收到请求后就开始查询,查到后向浏览器返回结果。如域名为www.cnblogs.com对应的IP地址为61.155.169.116 4. 知道IP地址后, 浏览器向IP地址为61.155.169.116的主机发出与端口号80建议一条TCP连接请求(HTTP协议是建立在传输层TCP的基础上的),80端口是服务器提供web服务的默认端口 5. 建立连接后,浏览器发出一条HTTP请求,如 GET http://www.cnblogs.com/ HTTP/1.1 6. 当域名为www.cnblogs.com的服务器接受到请求后,向浏览器发送一个html文件 7. 文件发送完后,由服务器主动关闭TCP连接。 8. 浏览器接收传送来的页面并显示 9. 如果Html文件中包含图片,还要与服务器再次建立一个TCP连接,以便可以下载图片

相关主题