`
liuyanttkl
  • 浏览: 20337 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

小型WEB服务器程序解析1

阅读更多
设计分析:简易WebServer由三个类组成,HttpServer,Request,Response

启动主类是HttpServer class.它创建一个HttpServer实例来调用它的await()方法,启动类是一个线程类,继承Tread,这个方法在一个指定的端口接受进入的HTTP请求,处理请求后 发送Response到客户端,await()一直在等待状态,知道它接受一个退出的命令。这个程序只能从指定的目录发送静态的内容给客户端,简单文件 比如 html image txt文件,且不支持headers参数处理(像dates,cookies)。


分析类HttpServer:它是一个WEB服务器,它为客户端提供public static void finalWEB_ROOT指定下的静态资源,WEB_ROOT的初始化,public static void finalWEB_ROOT=System.getProperty("user.dir") + File.separator  + "webroot";

HttpServer写成一个线程 继承Thread,设定一个停止命令 和端口,在run()里面定义InputStream OutputStream ,生成Request对象,调用Request里面的ParseContent(),解析Request上来的字符串,然后生成应答对象,传入输出流(ous)和Request(客户端的请求路径)。


分析类Request:与客户端连结的socket得到的InputStream对象创建,通过对这个InputStream对象的read调用可以得到客户端请求的原始数据,定义两个方法Parse()和parseUrl()来解析Request的原始数据,构造方法中传入这个input.定义私有的变量,private InoutSteam input,private String url,Request 类中的三个方法,一个是public void Parse()(解析请求的的内容) public string parseUrl(String queryString).


在Parse()方法中定义一个StringBuffer sb=new StringBuffer();

程序实现如下:

StringBuffer sb=new StringBuffer();

Int chh= -1;

While((chh=input.Read())!=-1){

request.Append((char)chh);

If(request.toString.endWith("\r\n"))

{

Break;

}

}

接下来将得到的字符串进行转码 以免出现乱码:

String requeStr=request.toString();

// 对读取到的数据进行重新编码 以免出现乱码

requeStr = java.net.URLDecoder.decode(requeStr, "GBK");

Url=praseURL(requeStr);

System.out.println(requeStr);


接下来把独到的数据装载到一个数组中间 然后打印出来,那么接下来定义一个数组

Byte[] recivedData=new byte[input.available()];

读取出来

Input.read(recivedData);

String result=new String(recivedData);

System.out.println(result);

接下来来解析URL:

/**

  * 从请求的内容中解析出路径

  * 

  * @param requestString

  */

 private String parseURL(String requestString) {

  int index1, index2;

  index1 = requestString.indexOf(' ');

  if (index1 != -1) {

   index2 = requestString.indexOf(' ', index1 + 1);

   if (index2 > index1)

    return requestString.substring(index1 + 1, index2);

  }

  return null;

 }

还有一个方法是GET到一个URL,返回一个url那么可以这样来定义:

Public String getUrl(){

Return url;



分析类response:它是一个应答对象,通过一个OutputStream 参数组成。

私有化两个变量 一个是是客户端的请求参数 一个是一个输出流。这样来定义,

Private Request request;

Private OutputStream output;

 private static final int BUFFER_SIZE = 1024;

在构造器中传入这两个参数:

Public void Response(String request,Stringoutput){

This.request=rquest;

This.output=output;

}

接下来分析这个类中的几个方法 为什么是这几个方法:

首先有一个可以给客户端发送静态资源的方法:public void sendStaticResource();

把客户端请求的文件名和目录写到输出流中:public void findFile(String url;outputStream output) throws IOException

将客户上传来的查询字符串解析成名值对 放入到一个map中间:private void parseParameter(String querString);

最后一个方法 就是替换字符串中的指定字符:private static String replace(String sorceStr,String fromStr,String toStr)三个变量分别表示源字符串,需要被替换的字符串 替换厚的目标字符串。


接下来就分析没一个方法的实现:



1:public void sendStaticResource(){

Try{

//这里的request 是客户端的请求参数 在request类中已经定义

findFile(request.getUrl,output)


}

Catch(Exceoption e)

{

System.out.println("get file error"+e);


}

Finally{

Try{

Output.close();

}

Catch(Exception e)

{}

}

}

这样就能把客户端的请求以静态的文本发送给客户端了


分享到:
评论

相关推荐

    小型Web服务器实现

    【标题】"小型Web服务器实现"涉及的主要知识点是构建一个简单的网络服务器,特别是Web服务器的基础原理和编程实践。Web服务器是互联网基础设施的关键组成部分,用于接收HTTP请求并返回HTML页面或其他资源,如图片、...

    Linux下小型WEB服务器boa的使用

    ### Linux下小型WEB服务器boa的使用详解 #### 一、boa简介及特点 Boa是一款轻量级的Web服务器软件,适用于Linux操作系统。它以其小巧、高效的特点在嵌入式设备和其他资源有限的环境中得到了广泛应用。尽管boa的...

    简单搭建WEB服务器 简单搭建WEB服务器 简单搭建WEB服务器

    在IT领域,Web服务器是提供HTTP(超文本传输协议)服务的应用程序,允许用户通过互联网访问网站和网页。本文将详细介绍如何简单搭建一个WEB服务器,包括基础概念、所需工具及步骤,旨在帮助初学者快速入门。 一、...

    Tiny_web_server(小型web服务器代码)

    在深入讲解这个小型Web服务器的实现之前,我们先了解一下Web服务器的基本概念。Web服务器是运行在互联网上,用于响应HTTP请求并返回相应内容(如HTML页面、图片、视频等)的软件。它们通过监听特定端口(通常是80或...

    易语言简易WEB服务器

    在易语言简易WEB服务器中,可能包含有解析请求头、提取请求方法、获取请求URL等函数。 4. **转换路径子程序**:在HTTP服务器中,转换路径是一个重要的功能,它将客户端请求的URL转换为服务器上实际的文件路径。例如...

    小型WEB服务器MyWebServer_gr.bkill.com.zip

    【MyWebServer:一款小型WEB服务器详解】 在互联网技术领域,Web服务器是不可或缺的一部分,它们负责接收HTTP请求并返回HTML页面或相关资源。本篇文章将深入探讨一款名为"MyWebServer"的小型Web服务器,它是针对...

    小型web服务器

    在IT领域,小型Web服务器是用于提供HTTP服务的简化版应用程序,它们通常由开发者用于学习、测试或构建轻量级的网络服务。本项目聚焦于一个小型的基于HTTP的Web服务器,采用C++编程语言实现,并结合了MySQL数据库以及...

    基于C语言编写的,多线程小型web服务器,实现简单的主页回显和web CGI(三个函数).zip

    通常,一个小型Web服务器项目可能包含以下文件:服务器主程序(如server.c)、CGI脚本示例、配置文件、日志文件等。my_resource可能是一个包含这些资源的目录,或者是一个特殊的资源文件。 总结来说,这个项目提供...

    STM32实现Web服务器

    1. **TCP/IP协议栈**:在嵌入式设备上实现Web服务器,首要任务是搭建TCP/IP协议栈。LwIP(Lightweight IP)是一个小型、高效的TCP/IP协议栈,适合资源有限的嵌入式系统。LwIP提供了TCP、UDP、ICMP等网络协议,使得...

    C-Web-Server源码 经典的C语言web服务器

    1. **网络通信模块**:Web服务器需要监听特定端口,等待客户端的连接。C-Web-Server使用socket API进行网络编程,包括socket创建、bind、listen和accept等函数。这部分代码展示了如何建立服务器与客户端之间的TCP...

    c#写的web服务器 源码

    标题中的"C#写的web服务器...通过学习这个C# Web服务器源码,你可以了解到如何处理HTTP请求,如何与客户端进行交互,以及如何实现一个小型的Web服务器。这对于提升你的Web开发技能和对互联网通信机制的理解非常有帮助。

    web服务器程序

    本文将深入探讨由VC编写的这款Web服务器程序,以及它在处理并发连接上的优秀性能。 首先,VC(Visual C++)是微软开发的一款集成开发环境,用于编写基于C++的应用程序。在Web服务器编程中,VC++因其高效的内存管理...

    基于单片机的Web服务器

    【标题】"基于单片机的Web服务器"指的是在微控制器(MCU)环境中构建一个小型的网络服务器,使得嵌入式设备能够通过HTTP协议与Web客户端进行交互。在这个特定的项目中,使用的单片机是C8051F020。C8051F020是一款...

    个人WEB服务器.RAR

    【个人WEB服务器】是一种软件应用,它允许用户在自己的计算机上搭建并运行一个小型的网络服务器,以便于分享文件、托管网站或者进行测试等。这种服务器通常面向个人使用,易于安装和配置,对于初学者或者小团队来说...

    安卓版本web服务器 almp_v7.0ALMP

    【安卓版本Web服务器 almp_v7.0ALMP】是一个专为Android平台设计的轻量级Web服务器,它允许用户在安卓设备上搭建并运行一个小型的Web服务环境。这款服务器软件具有一定的灵活性和实用性,尤其对于开发者进行移动测试...

    web服务器完整项目

    该项目名为“web服务器完整项目”,是一个使用Java编程语言实现的小型服务器,旨在处理静态和动态的网页请求。在JavaWeb开发领域,这样的服务器扮演着核心角色,因为它允许开发者构建和部署Web应用程序,为用户提供...

    ASP小旋风测试ASP网站小软件代替IIS的小型web服务器软件.rar

    ASP小旋风是一款轻量级的Web服务器软件,...总的来说,ASP小旋风作为一款代替IIS的小型Web服务器软件,为ASP开发和测试提供了便利,让开发者可以更加专注于代码编写和网站功能实现,而无需深陷于复杂的服务器配置之中。

    VC++写的小型HTTP服务器源程序

    当我们谈论"VC++写的小型HTTP服务器源程序"时,这意味着开发者使用VC++来实现了一个能够响应HTTP请求并返回适当HTTP响应的简易服务器。 HTTP服务器的基本工作原理是监听客户端(如Web浏览器)的连接,接收HTTP请求...

    CGI在嵌入式WEB服务器中的应用和实现.pdf

    在客户端与服务器通信时,Web服务器通过解析CGI脚本所返回的数据来生成响应,并将其发送回客户端浏览器显示。 文中提到了Linux下的Web服务器BOA,它是嵌入式系统中常用的轻量级Web服务器软件。BOA支持CGI并且适合于...

Global site tag (gtag.js) - Google Analytics