`
wjjxf
  • 浏览: 239436 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

随便写个Http Web Server 玩玩,当然是简单的。只能查看文件

阅读更多

不说话,直接上代码:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;


public class HttpServer {
 
	public static void main(String[] args) throws Exception {
		
		ServerSocket ss = new ServerSocket();
		InetSocketAddress sa = new InetSocketAddress(9090); 
		ss.bind(sa);
		do{
			Socket socket = ss.accept(); 
			InputStream ins = socket.getInputStream();
			BufferedReader bf = new BufferedReader(new InputStreamReader(ins)); 
			String line = bf.readLine();			
			while(line != null && !"".equals(line)){
				System.out.println(line); 
				if(line .startsWith("GET")){
					String[] head = line.split(" ");
					String fileName = "C:/Documents and Settings/Administrator/workspace/Test"+ head[1];
					System.out.println(fileName); 
					File f = null;
					FileInputStream fin  = null;
					try{
						f = new File(fileName);
						fin = new FileInputStream(f);						
					}catch(Exception e){
						//e.printStackTrace();
						//404
						OutputStream os = socket.getOutputStream();
						BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));		
						writeHeader(os, 404, "NOT FOUND:"+head[1]); 
						
						bw.write("<h1>Not found!</h1>");
						
						bw.flush();
						bw.close();
						socket.close();
						break;
					}
					OutputStream os = socket.getOutputStream(); 
					writeHeader(os, 200, "OK");
					
					int c = 0;
					byte[] b = new byte[1024];
					c = fin.read(b);
					while(c != -1){
						os.write(b, 0, c);
						c = fin.read(b);
					};
					fin.close();
					os.flush();
					os.close();
					socket.close();
					break;
				}else{
					HttpHeader header = new HttpHeader(line);
					System.out.println(header); 
				}
				line = bf.readLine();		
			}
			if(socket.isClosed())continue;
			OutputStream os = socket.getOutputStream();
			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
			//line = "hello world";
			
			writeHeader(os, 200, "OK");
			
			String body = "<h1>This is hello world !The time is:"+new Date().toLocaleString()+"。世界你好!"+"<h1>";
			bw.write(body);
			bw.flush();
			bw.close();
			os.close();
			socket.close();
		}while(true);
		
	}
	
	public static void writeHeader(OutputStream os, int httpStatus, String statusDesc) throws IOException{
		String header = "HTTP/1.1 "+httpStatus+" "+statusDesc+"\n" +
		 "Server: wbs\n" +
		 "Content-Type: text/html;charset=utf-8\n" +
		 "Content-Language: zh-CN\n" + 
		 "Date:"+new Date()+"\n\n";			
		os.write(header.getBytes());
	}

}
class RequestHeader{
	private String method;
	private String file;
	private String protocal; 
}
class HttpHeader{
	private String key;
	private String value;
	public HttpHeader(String header){
		header = header.trim();
		this.key = header.split(": ")[0];
		this.value = header.split(": ")[1];
	}
	
	public HttpHeader(String key, String value) { 
		this.key = key;
		this.value = value;
	}

	public String toString(){
		return this.key + ": "+this.value;
	}

	public String getKey() {
		return key;
	}

	public void setKey(String key) {
		this.key = key;
	}

	public String getValue() {
		return value;
	}

	public void setValue(String value) {
		this.value = value;
	}
}

 

分享到:
评论

相关推荐

    简单的Web Server程序

    【标题】"简单的Web Server程序"揭示了我们讨论的核心是一个基于VC6.0开发的简易Web服务器。这个项目旨在提供一个基础平台,用于理解和实践Web服务器的基本工作原理,特别是如何处理HTTP请求并返回HTML文件。 ...

    WebServer项目文件

    综上所述,"WebServer项目文件"提供的配置文件和"webapps"目录内容,为开发者提供了一个实践和学习Web服务器架构、网络编程和服务器管理的平台。通过研究和修改这些文件,你可以深入了解Web服务器的工作机制,并提升...

    WebServer 文件下载

    首先,WebServer是互联网上的一个服务器,用于接收HTTP请求并返回HTTP响应,这些响应通常包括静态资源(如HTML、CSS、JavaScript文件)或动态生成的数据。文件下载功能允许用户从WebServer获取大文件,如软件安装包...

    搭载webserver服务器文件

    "搭载webserver服务器文件"这个标题暗示我们将讨论如何设置和配置一个Web服务器,以便在本地或网络上运行网站。 描述中的“本机webserver服务器”意味着我们将重点放在在个人计算机上建立一个本地Web服务器。这对于...

    android webserver简单网页服务器

    在Android平台上实现一个简单的网页服务器是一项有趣的挑战,它允许设备作为一个小型Web服务器运行,从而能够提供本地内容或者进行一些测试。这个项目的核心是利用Android系统的网络功能来搭建一个微型HTTP服务器,...

    vc6.rar_VC webserver_VC webserver_VC6_vc++ webserver_webserver

    【描述】中的"VC写的webserver程序"简明扼要地说明了这个项目的核心:它是一个用Visual C++编写的Web服务器程序。Web服务器是一种在互联网上运行的应用程序,它能够接收HTTP请求,处理这些请求,并返回HTTP响应,...

    一个简单的WebServer

    【标题】"一个简单的WebServer"揭示了我们讨论的主题是一个基于Windows操作系统的简易Web服务器程序。Web服务器是用于在互联网上提供网页服务的软件,它接收HTTP(超文本传输协议)请求并返回HTML页面或其他资源,使...

    一个简单的WEBSERVER

    【标题】"一个简单的WEBSERVER"所涉及的知识点主要集中在构建一个基本的网络服务器以及ISAPI(Internet Server Application Programming Interface)的实现上。这里我们将会深入探讨这两个核心概念。 **1. Web...

    使用matlab web server直接进行web开发

    在安装完成后,你需要在 `/Webserver` 目录下创建一个名为 `matlabserver.conf` 的配置文件。此文件用于定义服务器的运行参数,如端口号(默认为8888)和最大并发线程数。例如,你可以将配置文件中的 `-m 1` 修改为...

    Tiny-WebServer-master一个微web服务器, 纯c语言实现

    总的来说,Tiny-WebServer-master是一个实用的学习工具,它展示了如何使用C语言实现一个简单的Web服务器,同时提供了深入研究网络编程和Web服务器架构的机会。无论是对个人学习还是团队项目,都具有很高的价值。

    Easy File Sharing Web Server 7.2

    总结来说,Easy File Sharing Web Server 7.2 是一个强大且易于使用的文件共享工具,它的核心优势在于简化了文件共享的过程,提升了工作效率,同时提供了必要的安全性和管理功能。无论您是用来进行团队协作,还是...

    TinyWebServer-raw_version_RAW_轻量级web服务器_TinyWebServer_

    【TinyWebServer-raw_version_RAW_轻量级web服务器_TinyWebServer】是一个专为网络新手设计的项目,旨在帮助用户理解并实现一个基础的、轻量级的Web服务器。这个项目采用Linux作为开发环境,因此它基于Unix-like系统...

    python写的mini web server

    标题 "python写的mini web server" 描述了使用Python语言构建的一个小型Web服务器。这个服务器可能是为了教学、测试或快速原型开发目的而设计的,它可以让用户在本地运行一个简单的HTTP服务,无需复杂的Web服务器...

    基于Stm32的嵌入式WebServer例程

    本例程是关于如何在STM32上实现一个简单的Web服务器,这对于物联网应用、远程监控或设备管理等场景非常实用。 首先,我们要理解嵌入式Web服务器的工作原理。嵌入式Web服务器是一个能够在嵌入式设备(如STM32微控制...

    Qt实现WebServer通讯

    【Qt实现WebServer通讯】这一主题涉及到的是使用Qt框架构建一个能够与Web服务器进行通信的应用程序。Qt是一个跨平台的C++开发库,它提供了丰富的功能,包括图形用户界面、网络编程、数据库接口等,使得开发者可以...

    LabVIEW Web Server 设计

    在LabVIEW中,Web Server功能的配置包括以下几个主要步骤: 1. **配置Web Server**: - 启动LabVIEW主程序,编辑并调试好所需的VI面板。 - 通过“工具”-&gt;“选项”(O)打开设置,选择\Web服务器\选项卡。 - ...

    oracle webserver完全教程

    Oracle WebServer是一款由Oracle公司开发的web服务器,它在90年代末期被广泛用于部署和管理基于Web的应用程序。本教程将全面介绍Oracle WebServer的相关知识,帮助读者掌握其安装、配置、管理和优化等核心技能。 ...

    webserver的实现

    总之,通过C语言实现一个简单的Web服务器涉及到网络编程、HTTP协议理解和文件I/O操作,这是一项对编程技能和对互联网工作原理理解的综合考验。通过这个项目,开发者不仅可以提升自己的技术能力,还能深入理解Web服务...

    Unity Render Streaming相关的webserver服务运行文件

    在提供的文件"webserver.exe"中,我们可以推断这是一款用于运行Unity Render Streaming服务的Web服务器应用程序。这个可执行文件通常是用C#或其他支持.NET框架的语言编写的,其主要职责是处理客户端请求,接收来自...

    stm32f107 web server

    STM32F107 Web服务器是一个嵌入式系统项目,它允许用户通过网页界面与基于STM32F107微控制器的设备进行交互。STM32F107是意法半导体(STMicroelectronics)生产的一款高性能、低功耗的ARM Cortex-M3微控制器,广泛...

Global site tag (gtag.js) - Google Analytics