http://zhidao.baidu.com/question/10672912.html?fr=qrl&cid=870&index=4&fr2=query http://java.chinaitlab.com/advance/519981.html package net; import java.net.*; import java.io.*; import java.util.*; public class ServerWeb03 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ServerSocket ss; Socket s; try { FileReader fr = new FileReader("D://port.txt"); //端口号放在指定的文件中 BufferedReader br = new BufferedReader(fr); int port = Integer.parseInt(br.readLine()); ss = new ServerSocket(port); System.out.println("ServerWeb Server is listening on port " + ss.getLocalPort()); int i = 1; while (true){ s = ss.accept(); //接受客户机的请求 // System.out.println("启动线程数:" + i); Runnable r = new ServerWebHandler03(s , i); Thread t = new Thread(r); t.start(); i++; //计数器 } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class ServerWebHandler03 implements Runnable{ Socket s = null; //连接web浏览器的socket字 int i; public ServerWebHandler03(Socket s, int i){ this.s = s; this.i = i; } public void run(){ try { String destIP = s.getLocalAddress().toString(); //客户机IP地址 int destPort = s.getPort();//客户机 端口号 System.out.println("Connection " + i + " connected to" + destIP + " on port : " + destPort ); /* Scanner in = new Scanner(s.getInputStream()); in.hasNextLine(); //boolean类型 String line = in.nextLine();*/ InputStream ips = s.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(ips)); PrintWriter out = new PrintWriter(s.getOutputStream(), true); String line = br.readLine(); //读取web浏览器提交的请求 System.out.println("Received: " + line); if (getRequest(line)){ //如果是GET请求 String fileName = getFileName(line); File file = new File(fileName); if (file.exists()){ //若文件存在 将文件送给web浏览器 System.out.println(file.getName() + " requested"); out.println("HTTP/1.1 200 OK"); out.println("MIME_version: 1.0"); out.println("Content_Type: text/html"); int len = (int)file.length(); out.println("Content_Length:" + len); out.println(""); sendFile(out, file); //发送文件 }else{ //若文件不存在 out.println("HTTP/1.1 404 no fond"); out.println("Content_Type: text/html"); } } long m1 = 1; while (m1<11100000){ m1++ ; //延时 } s.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } boolean getRequest(String s){ //获取请求类型是否为GET if (s.length()>0){ if (s.substring(0, 3).equalsIgnoreCase("GET")){ return true; } } return false; } String getFileName(String s){ //获取访问的文件名 String f = s.substring(s.indexOf(' ')+1); f = f.substring(0, f.indexOf(' ')); try{ if (f.charAt(0)=='/'){ f.substring(1); } }catch (StringIndexOutOfBoundsException e){ e.printStackTrace(); } if (f.equals("")){ f = "index.html"; } return f; } void sendFile(PrintWriter out, File file){ //把指定文件发送给浏览器 try { // Scanner in = new Scanner(new FileInputStream(file)); // Scanner in = new Scanner(new FileReader(file)); InputStreamReader ipsr = new InputStreamReader(new FileInputStream(file)); BufferedReader br = new BufferedReader(new FileReader(file)); String str ; while ((str=br.readLine())!=null){ out.write(str + "/r" + "/n"); } br.close(); out.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }