資源簡介
多線程web服務器源碼和實驗報告
實現Runnable 接口方法實現

代碼片段和文件信息
import?java.net.*;?
import?java.io.*;?
import?java.util.*;??
public?class?WebServer{?
???public?static?void?main(String?args[])throws?Exception?{?
???ServerSocket?listenSocket?=?new?ServerSocket(6789);
???System.out.println(“httpServer?running?on?port?“?+?
???listenSocket.getLocalPort());??
?????while(true)?{??
???????try?{Socket?socket?=?listenSocket.accept();
???????Thread?thread?=?new?Thread(new?RequestHandler(socket));??
???????thread.start();?}//啟動線程
???????catch(Exception?e){}
????????}?
?????}?
}?
class?RequestHandler?implements?Runnable?{?
????Socket?connectionSocket;?
????OutputStream?outToClient;?
????BufferedReader?inFormClient;
????String?requestMessageLine;
String?fileName;
????//?構造方法?
????public?RequestHandler(Socket?connectionSocket)?throws?Exception?{?
????this.connectionSocket?=?connectionSocket;?
?????}??????????????
????public?void?run(){?//?實現Runnable?接口的run()方法
????try?{?processRequest();}?
????catch(Exception?e)?{?System.out.println(e);}?
?????}?
????private?void?processRequest()?throws?Exception?{?
????????//讀取并顯示Web?瀏覽器提交的請求信息?
????????BufferedReader?inFormClient?=?
????????new?BufferedReader(?new?InputStreamReader(?connectionSocket.getInputStream()?)?);
????????DataOutputStream?outToClient?=?new?DataOutputStream(
?????????? connectionSocket.getOutputStream());
????????//讀取html請求報文第一行
????????requestMessageLine?=?inFormClient.readLine();
????????//解析請求報文文件名
????????StringTokenizer?tokenizerLine?=????//tokenizerLine對象是最初請求行
????????new?StringTokenizer(requestMessageLine);
????????????if?(tokenizerLine.nextToken().equals(“GET“)){
?????????? ???fileName?=?tokenizerLine.nextToken();
????????????if?(fileName.startsWith(“/“)==true)?fileName?=?fileName.substring(1);
?????????? File?file?=?new?File(fileName);
????????????int?numOfBytes?=?(int)file.length();
?????????? FileInputStream?inFile?=?new?FileInputStream(fileName);
?????????? byte[]?fileInBytes?=?new?byte[numOfBytes];?
?????????? inFile.read(fileInBytes);
????????????//構造http響應報文
????????????outToClient.writeBytes(“HTTP/1.0?200?Document?Follow\r\n“);
????????????if(fileName.endsWith(“.jpg“))
?????????? ??outToClient.writeBytes(“Content-type:image/jpeg\r\n“);
?????????? if(fileName.endsWith(“.gif“))
?????????? outToClient.writeBytes(“Content-type:image/gif\r\n“);
????????????????outToClient.writeBytes(“Content-type:“?+?“numOfBytes“?+?“\r\n“);
?????????? ????outToClient.writeBytes(“\r\n“);
?????????? ????outToClient.write(fileInBytes0numOfBytes);
?????????? ????connectionSocket.close();
???????????????}
?????????? else?System.out.println(“Bed?Request?Message“);
????}?
}?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????226??2008-11-30?15:39??多線程Web服務器\.classpath
?????文件????????397??2008-11-30?15:39??多線程Web服務器\.project
?????文件??????68053??2008-11-30?16:06??多線程Web服務器\images\123.jpg
?????文件????????173??2008-11-28?22:53??多線程Web服務器\index.html
?????文件???????2576??2008-11-30?15:53??多線程Web服務器\RequestHandler.class
?????文件???????1195??2008-11-30?15:53??多線程Web服務器\WebServer.class
?????文件???????2719??2008-12-12?12:30??多線程Web服務器\WebServer.java
?????文件??????89600??2008-12-12?12:31??多線程Web服務器\多線程web服務器.doc
?????目錄??????????0??2008-12-12?10:55??多線程Web服務器\images
?????目錄??????????0??2008-12-12?12:31??多線程Web服務器
-----------?---------??----------?-----??----
???????????????164939????????????????????10
- 上一篇:Android 最簡單的GPS獲取源代碼
- 下一篇:xm
l-apis.jar包
評論
共有 條評論