Java服务器程序
转载自:http://langhua9527.iteye.com/blog/328174运行此服务器程序的前提是首先在XP上安装IIS,然后在默认的服务器目录C:\Inetpub\wwwroot
下新建一个dog.html文件。之后,运行下文的程序WebServer.java,后在IE输入http://localhost/dog.html就行了。
WebServer.java
import java.io.*;import java.net.*;public class WebServer { private void webStart(int port){ try { //新建一个服务器ServerSocket ServerSocket socketServer = new ServerSocket(port); while(true){ //等待客户端的请求 Socket socket = socketServer.accept(); new Processor(socket).start(); } } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { int port = 2011; if(args.length == 1){ port = Integer.parseInt(args); } //启动服务器 new WebServer().webStart(port); } }
Processor.java
import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.Socket;public class Processor extends Thread { private Socket sockets; private InputStream in; //为方便使用PrintStream private PrintStream out; //限定访问的文件地址 private final static String WEB_ROOT = "C:\\Inetpub\\wwwroot"; public Processor(Socket socket) { this.sockets = socket; try { //初始化in,out in = sockets.getInputStream(); out = new PrintStream(sockets.getOutputStream()); } catch (IOException e) { e.printStackTrace(); } } public void run() { String filename = parse(in); sendFile(filename); } //读客户端传过来的信息,返回需要请求的文件名 public String parse(InputStream in) { //建立一个BufferedReader读客户端传过来的信息 BufferedReader br = new BufferedReader(new InputStreamReader(in)); String filename = null; try { String httpMessage = br.readLine(); String[] content = httpMessage.split(" "); if (content.length != 3) { sendErrorMessage(400, "客户端请求错误"); } System.out.println("code:" + content + ",name:" + content + ",http version" + content); filename = content; } catch (IOException e) { e.printStackTrace(); } return filename; } //错误处理 public void sendErrorMessage(int errorCoder, String errorMessage) { } //读取本地文件 public void sendFile(String filename) { File file = new File(Processor.WEB_ROOT + filename); if (!file.exists()) { this.sendErrorMessage(404, "文件名不存在错误"); } try { //读取本地文件,并放到content里面,再用out写到客户端那边 InputStream in = new FileInputStream(file); byte[] content = new byte[(int) file.length()]; in.read(content); out.write(content); out.close(); in.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
页:
[1]