java使用socket实现一个多线程web服务器的方法-创新互联

除了服务器类,还包括请求类和响应类

成都创新互联公司,为您提供网站建设公司成都网站制作公司、网站营销推广、网站开发设计,对服务主动防护网等多个行业拥有丰富的网站建设及推广经验。成都创新互联公司网站建设公司成立于2013年,提供专业网站制作报价服务,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏心悦目的作品。 与客户共同发展进步,是我们永远的责任!

请求类:获取客户的HTTP请求,分析客户所需要的文件

响应类:获得用户请求后将用户需要的文件读出,添加上HTTP应答头。发送给客户端。

服务器处理类

package com.lp.app.webserver;

import java.io.*;
import java.net.*;

//使用Socket创建一个WEB服务器,本程序是多线程系统以提高反应速度。
class WebServer
{
 public static String WEBROOT = "";//默认目录
 public static String defaultPage = "index.htm";//默认文件
 public static void main (String [] args) throws IOException
 {
 System.out.println ("服务器启动...\n"); 
 //使用8080端口提供服务
 ServerSocket server = new ServerSocket (8080);
 while (true)
 {
  //阻塞,直到有客户连接
  Socket sk = server.accept ();
  System.out.println ("Accepting Connection...\n");
  //启动服务线程
  new WebThread (sk).start ();
 }
 }
}


//使用线程,为多个客户端服务
class WebThread extends Thread
{
 private Socket sk;
 WebThread (Socket sk)
 {
  this.sk = sk;
 }

 //线程体
 public void run ()
 {
  InputStream in = null;
  OutputStream out = null;
  try{
  in = sk.getInputStream();
  out = sk.getOutputStream();
  //接收来自客户端的请求。
  Request rq = new Request(in);
  //解析客户请求
  String sURL = rq.parse();
  System.out.println("sURL="+sURL);
  if(sURL.equals("/")) 
   sURL = WebServer.defaultPage;
  Response rp = new Response(out);
  rp.Send(sURL); 
  }
  catch (IOException e)
  {
  System.out.println (e.toString ());
  }
  finally
  {
  System.out.println ("关闭连接...\n");
  //最后释放资源
  try{
   if (in != null)
   in.close ();
   if (out != null)
   out.close ();
   if (sk != null)
   sk.close ();
  }
  catch (IOException e)
  {
  }
  }
 }
}

分享文章:java使用socket实现一个多线程web服务器的方法-创新互联
文章出自:http://myzitong.com/article/dggeic.html