import java
import
import
/**
* Socket + Thread + FileIO
*
* 服務器運行機制
*
*
*
*
*
*
* @author Administrator
*
*/
public class Server
{
private int port =
/**
* 啟動服務器
*/
public void start()
{
try
{
// 實例化一個服務器端Socket對象
ServerSocket server = new ServerSocket(port);
while(true)
{
// 接收到的socket對象中 包含了http請求信息
Socket socket = server
System
// 將socket對象交給線程類進行 單獨的處理
Processor p = new Processor(socket);
new Thread(p)
}
}
catch (IOException e)
{
e
}
}
/**
* 簡單的服務器程序
* @param args
*/
public static void main(String[] args)
{
new Server()
}
}
import java
import java
import java
import java
import java
import java
import java
import java
import java
import
/**
* Processor 用於接收請求內容
* @author Administrator
*
*/
public class Processor implements Runnable
{
private Socket socket;
// 定義虛擬服務器所在的根目錄
// 當訪問請求地址為
// 程序將讀取並返回 WEB_ROOT\doc\l 文件的內容
private final static String WEB_ROOT =
public Processor(Socket s)
{
this
}
@Override
public void run()
{
// 分析請求內容
String filePath = parse();
// 處理響應
String fileContent = readFile(filePath);
if(fileContent != null)
{
// 發送響應
sendResult(
}
}
/**
* 解析請求內容
* @return 頁面相對路徑
*/
public String parse()
{
try
{
InputStream in = socket
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String requestContent = reader
// System
String[] contents = requestContent
String url = contents[
// System
// in
// reader
return url;
}
catch (IOException e)
{
e
}
return null;
}
/**
* 根據傳入的文件相對路徑
* 如果沒有找到文件
* @param filePath
* @return
*/
public String readFile(String filePath)
{
String absFilePath = WEB_ROOT + filePath;
File file = new File(absFilePath);
System
// File IO流讀取文件內容
if(file
{
try
{
byte[] buff = new byte[(int) file
FileInputStream fis = new FileInputStream(file);
fis
String fileContent = new String(buff);
fis
return fileContent;
}
catch (FileNotFoundException e)
{
e
}
catch (IOException e)
{
e
}
}
else
{
sendResult(
}
return null;
}
/**
* 通過響應發送響應內容
* @param errorCode
* @param errorMessage
*/
public void sendResult(int code
{
// 通過socket對象的輸出流 發送響應內容
try
{
OutputStream os = socket
OutputStreamWriter osw = new OutputStreamWriter(os);
osw
osw
osw
osw
osw
osw
osw
}
catch (IOException e)
{
e
}
}
}
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26138.html