不说话,直接上代码:
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程序"揭示了我们讨论的核心是一个基于VC6.0开发的简易Web服务器。这个项目旨在提供一个基础平台,用于理解和实践Web服务器的基本工作原理,特别是如何处理HTTP请求并返回HTML文件。 ...
综上所述,"WebServer项目文件"提供的配置文件和"webapps"目录内容,为开发者提供了一个实践和学习Web服务器架构、网络编程和服务器管理的平台。通过研究和修改这些文件,你可以深入了解Web服务器的工作机制,并提升...
【描述】中的"VC写的webserver程序"简明扼要地说明了这个项目的核心:它是一个用Visual C++编写的Web服务器程序。Web服务器是一种在互联网上运行的应用程序,它能够接收HTTP请求,处理这些请求,并返回HTTP响应,...
【标题】"一个简单的WebServer"揭示了我们讨论的主题是一个基于Windows操作系统的简易Web服务器程序。Web服务器是用于在互联网上提供网页服务的软件,它接收HTTP(超文本传输协议)请求并返回HTML页面或其他资源,使...
【标题】"一个简单的WEBSERVER"所涉及的知识点主要集中在构建一个基本的网络服务器以及ISAPI(Internet Server Application Programming Interface)的实现上。这里我们将会深入探讨这两个核心概念。 **1. Web...
总结来说,Easy File Sharing Web Server 7.2 是一个强大且易于使用的文件共享工具,它的核心优势在于简化了文件共享的过程,提升了工作效率,同时提供了必要的安全性和管理功能。无论您是用来进行团队协作,还是...
在本教程中,我们将专注于Oracle WebServer,一个与Oracle7 Server高度集成的HTTP服务器,它以特殊的方式处理动态HTML文件,使其能实时反映出数据库中的变化。 Oracle WebServer的核心优势在于其动态生成HTML的能力...
【TinyWebServer-raw_version_RAW_轻量级web服务器_TinyWebServer】是一个专为网络新手设计的项目,旨在帮助用户理解并实现一个基础的、轻量级的Web服务器。这个项目采用Linux作为开发环境,因此它基于Unix-like系统...
本例程是关于如何在STM32上实现一个简单的Web服务器,这对于物联网应用、远程监控或设备管理等场景非常实用。 首先,我们要理解嵌入式Web服务器的工作原理。嵌入式Web服务器是一个能够在嵌入式设备(如STM32微控制...
webserver支持CGI函数的实现 在 web 开发中,CGI(Common Gateway Interface,公共网关接口)是一种标准接口,allowing web 服务器和外部应用程序之间的交互。为了实现webserver支持CGI函数,我们需要了解CGI的基本...
在LabVIEW中,Web Server功能的配置包括以下几个主要步骤: 1. **配置Web Server**: - 启动LabVIEW主程序,编辑并调试好所需的VI面板。 - 通过“工具”->“选项”(O)打开设置,选择\Web服务器\选项卡。 - ...
标题“WebDev.WebServer40”涉及的是Visual Studio(VS)中的一个组件,它是一个用于Web应用程序开发和调试的内置Web服务器。WebDev.WebServer40是VS的一个关键部分,特别是对于C++开发者,因为它是用来支持调试环境...
Unity Render Streaming相关的webserver服务运行文件
AspWebServer是一款基于MFC(Microsoft Foundation Class Library)开发的轻量级Web服务器软件,其源码提供了深入了解Web服务器工作原理以及如何在Windows平台上构建此类应用的机会。在这个项目中,源码是针对...
总之,通过C语言实现一个简单的Web服务器涉及到网络编程、HTTP协议理解和文件I/O操作,这是一项对编程技能和对互联网工作原理理解的综合考验。通过这个项目,开发者不仅可以提升自己的技术能力,还能深入理解Web服务...
3. **易于配置**: ASP.NET WebServer的配置相对简单,对于初学者来说更加友好,不需要复杂的IIS配置知识。 4. **自动启动**: 提供的Start.exe文件可能用于自动启动WebServer,使得开发者能够快速启动并运行项目。 ...
包中的"简单易懂webserver接口开发之SoapTookit说明.doc"提供了关于如何使用这个工具的指导。 4. **SOAP协议**:SOAP协议定义了一种轻量级的、独立于语言的协议,用于交换结构化的、自描述的XML信息。"SOAP 接口...
【标题】"简单的PHP web server(适合学习写web server)"揭示了这个项目的核心内容,即构建一个基于PHP的简易Web服务器。这个Web服务器适用于学习和理解Web服务器的工作原理,尤其是如何将PHP集成到自定义的服务器...
### vxWorks中的Web Server知识点详解 #### 一、引言 随着信息技术的飞速发展,嵌入式系统已经成为计算机领域的重要组成部分。为了更好地利用互联网技术,实现设备的远程控制和管理,嵌入式Web Server的应用变得...