不说话,直接上代码:
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;
}
}
分享到:
相关推荐
WebServer项目配置文件,自己编写的WebServer服务器的一些配置文件
利用VC6.0实现的一个简单的 Web Server,能够响应客户端的请求将指定目录下的 HTML文件通过指定的TCP端口发送给客户端
一个简易的WebServer,能够在IIS支持下实现网页的简单访问,适合初学者!
本机webserver服务器..
c#WebServer简单示例 这是我第一次学习webserver时候别人给的觉得非常好用!简单明白!
这是一个WebService接口的多线程文件下载,要的拿去
简单来说,Web Server 就是一个应用程序,它可以接收和响应客户端的请求,提供静态或动态内容给客户端。 为什么要用 Web Server?在传统的桌面应用程序中,应用程序安装和配置的问题,客户端和服务器之间的通信问题...
webserver
webServer,自己开发的服务器配置文件,用于一些基本的配置
VC写的webserver程序
android简单网页服务器,可作为android上面的webserver
Easy File Sharing Web Server允许用户不需要任何附加的软件或服务就可以架设一个安全的、基于网页的P2P文件分享、传输系统。 除了HTML网页界面设计,Easy File Sharing Web Server还可以让你直接在自己的PC上快速...
Web Server程序Web Server程序Web Server程序
用Delphi写的一个小型webserver源码,附有CGI测试代码
一个简单的WEBSERVER,由VC6.0SP6实现. 同时实现了一个简单的ISAPI, 呵呵,还可以上传哟!
linux c 写的web_server web服务器
Tiny-WebServer-master一个微web服务器, 纯c语言实现, 快速
但是这个简易的WebServer有个问题,就是它仅仅监听 Loopback 地址 127.0.0.0,也就是说只有从本机才能浏览网站,从外部的地址访问就不行。 有时候在开发调试的过程中需要项目组内部的其他人也能够访问这个WebSite,...
弄了三种webServer的写法,简单、复杂的,感觉国外这个开源的最好。 我在他基础上测试了通过网页调用串口。 网页本身是不能控制串口的,这样调用: 在js里这样调用: http://127.0.0.1:8080?method=gaizhang 这个cs...