云南大学软件学计算机网络原理实验四

实验四、web服务器套接字编程实验指导

1.实验目的:

编写一个WEB服务器程序,可以接受来自浏览器的访问,并传输页面(包含多个对象)到浏览器。掌握Socket编程。

2.实验环境:

连入局域网络的主机一台。

3.实验指导:

超文本传输协议(HTTP)是位于TCP/IP 协议的应用层,是最广为人知的协议,也是互连网中最核心的协议之一。HTTP协议是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。

一个完整的HTTP协议会话过程包括四个步骤:

连接

Web浏览器与Web服务器建立连接,打开一个称为Socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功;

请求

Web浏览器通过Socket向Web服务器提交请求。HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递);

应答

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

关闭连接

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

4.实验分析,回答下列问题。

运行课本中Webserver.java程序。查找资料,写出程序源代码,并加上必要的注释。如能改写该程序,附上修改后的源代码。附上运行的截图。

代码及注释如下:

import?java.io.*;//引入Java输入输出包 import?.*; //引入Java网络包 import?java.util.*;//导入Java实用工具库 class?Webserver{public?static?void?main(String?arg[])?throws?Exception{String?requestMessageLine;String?filename;

//创建一个监听socket ServerSocket?listenSocket=new?ServerSocket(6789);

//等待客户机发起连接 while(1==1){Socket?connectionSocket=listenSocket.accept();

//创建一个从socket中读文本行的流 BufferedReader?inFromClient=new?

BufferedReader(new?InputStreamReader(connectionSocket.getInputStream()));

//创建一个向socket中写文本行的流 DataOutputStream?outToClient=new?

DataOutputStream(connectionSocket.getOutputStream());

//读取客户机发送的一行文本requestMessageLine=inFromClient.readLine();

//字段串解析 StringTokenizer?tokenizerLine=new?StringTokenizer(requestMessageLine);

//如果客户端的请求方式为get方式

if(tokenizerLine.nextToken().equals("GET")){

filename=tokenizerLine.nextToken();

//获得文件名

if(filename.startsWith("/")==true)

filename=filename.substring(1);

//新建文件

System.out.println("The request filename is:" + filename);

//输出字符串,内容为客户端请求的文件名

File file=new File(filename);

int numOfBytes=(int)file.length();

//新建文件输入流

FileInputStream inFile=new FileInputStream(filename);

byte[] fileInBytes=new byte[numOfBytes];

//将文件流信息读入byte数组

inFile.read(fileInBytes);

// 服务端输出信息

outToClient.writeBytes("HTTP/1.0 200 Document Follows\r\n");

//不同的文件类型所对应的头文件格式不同

if(filename.endsWith(".jpg"))

outToClient.writeBytes

计算机网络云南大学实验四,云南大学软件学计算机网络原理实验四.doc相关推荐

  1. 计算机网络课件第三章,南京邮电大学计算机网络第三章习题.ppt

    文档介绍: 题3-25:在上题中的站点A和B在t=0时同时发送了数据帧.当t=225比特时间,A和B同时检测到发生了碰撞,并且在t=255+48=273比特时间完成了干扰信号的传输.A和B在CSMA/ ...

  2. 编译原理上机实习c语言小子集编译程序的实现报告,合肥工业大学编译原理实验报告(完整代码版)...

    <合肥工业大学编译原理实验报告(完整代码版)>由会员分享,可在线阅读,更多相关<合肥工业大学编译原理实验报告(完整代码版)(58页珍藏版)>请在人人文库网上搜索. 1.计算机与 ...

  3. 大连理工大学计算机原理实验交通灯,大连理工大学计算机原理第四次实验.docx...

    文档介绍: 大连理工大学本科实验报告课程名称:计算机原理实验学院(系):信息与通信工程学院专业:通信工程班级:电通1402学号:201483051学生姓名:糜智华2016年12月19日实验(四)名称: ...

  4. 计算机组成原理实验报告十,合肥工业大学计算机组成原理实验报告.doc

    合肥工业大学计算机组成原理实验报告.doc (27页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 实验一 基本运算器实验一.实验目的了 ...

  5. 南京邮电大学c语言实验报告4,南京邮电大学算法设计实验报告——动态规划法...

    <南京邮电大学算法设计实验报告--动态规划法>由会员分享,可在线阅读,更多相关<南京邮电大学算法设计实验报告--动态规划法(12页珍藏版)>请在人人文库网上搜索. 1.实 验 ...

  6. 通信原理实验c语言,基于LabVIEW软件的通信原理实验教学平台设计方案

    1.引言本文引用地址:http://www.eepw.com.cn/article/201809/388499.htm <通信原理>课程是我校通信工程专业.电子信息工程专业的一门专业基础课 ...

  7. 编译实验 lr c语言代码,编译原理-实验5-LR(1)分析法

    <编译原理-实验5-LR(1)分析法>由会员分享,可在线阅读,更多相关<编译原理-实验5-LR(1)分析法(6页珍藏版)>请在人人文库网上搜索. 1.编译原理实验报告项目名称 ...

  8. 微型计算机实验考试答案,华中科技大学微机原理实验考试题库与答案.doc

    华中科技大学微机原理实验考试题库与答案 复习题(后面附有全部代码) 1.用74LS244设计一个输入接口.从输入端口读入开关状态(高表示'1',低表示'0'),以十进制形式在CRT显示器上显示输入结果 ...

  9. 大专生学计算机网络好还是数控好,我是学计算机网络的专科生,我要自考本科?数学太差了,请问怎么才能考过?...

    问: 我是职业高中毕业的.如果我想参加自学自考学计算机网络安全那一类的专业.要怎么办 答: 第一点.教材自考书店.大的新华书店都有的卖.还有就是报名时定购教材(推荐). 第二点.自考没有学几年之说.考 ...

最新文章

  1. oracle 创建用户、授权、表空间
  2. 十年Java编程开发生涯,java计算时间差毫秒
  3. 计算机视觉——百度百科
  4. Windows环境下JDK安装与环境变量配置
  5. dm7数据库单机安装步骤
  6. 网页制作大作业HTML+CSS制作静态网页----原神
  7. 生命中,很多事是事在人为
  8. OpenGL GLM环境配置
  9. 「MacTeX 小笔记」准备篇
  10. abaqus .cae文件默认程序设置
  11. html页面插入百度谷歌地图的方法
  12. Windows访问共享文件报错:请检查名称拼写。否则,网络可能有问题
  13. DroidPlugin插件框架 - 《Android必备技能》
  14. 《如何五分钟创建自己的新币token 》Dapp开发 Web3+以太坊+智能合约开发 (一)
  15. kali官方ios下载今天刚刚下载的
  16. UDP组播开发测试实例
  17. oracle10r2的新特性
  18. HR面试题(史上最全、持续更新、吐血推荐)
  19. 详解pdfFactory的页面管理功能
  20. elementUI 表格属性 匹配 数据字典数据

热门文章

  1. win7系统设置开机自动联网的方法
  2. 防止重复提交js jquery ajax
  3. Mybatis 插入时获取主键的方式
  4. 学习Spring Boot:(三)配置文件
  5. 天文学专业在什么时候学计算机,南京大学在985排名第几?南京大学最牛的专业是天文系吗?...
  6. linux查询.gz日志,linux2-查日志
  7. LeetCode算法入门- Valid Parentheses -day11
  8. python求出五位数的回文数_python之递归
  9. python自动化输入不了中文_appium+python自动化61-中文输入乱码问题解决
  10. 做计算机工作的要专用手机吗,怎么在手机上完成工作?原来没有电脑手机还可以这样用...