關於這個簡單的小項目,咱們可能會用到的知識點:html
IO流編程
網絡編程瀏覽器
多線程服務器
對象的建立,循環等等網絡
public class BSTCPServer { public static void main(String[] args) throws IOException{ //1 建立服務器對象ServerSocket 系統的端口號指定 10800 ServerSocket server = new ServerSocket(10800); //2 使用ServerSocket 對象中的方法accept(); 監聽並獲取請求的客戶端Socketd對象(瀏覽器) Socket socket = server.accept(); // 3 使用Socket對象中的方法 getInputStream 獲取網絡字節輸入流 InputStream對象 InputStream is = socket.getInputStream(); //4 讀取客戶端請求的信息 byte[] bytes = new byte[1024]; int len = is.read(bytes); System.out.println(new String(bytes,0,len)); // 把網絡字節輸入流 轉爲網絡字符緩衝流 BufferedReader br = new BufferedReader(new InputStreamReader(is)); //讀取 客戶請求信息的第一行 包含了頁面的地址 String line = br.readLine(); // System.out.println(line); // 切割字符串 split(" "); String[] arr = line.split(" "); System.out.println(arr[1]); // 截取 字符串 substring String path = arr[1].substring(1); System.out.println(path);// 路徑 //建立本地字節輸入流 緩衝流進行包裝一下 提升效率 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path)); // 獲取網絡字節輸出流 (緩衝流) BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream()); // 使用BufferedInputStream ---》read讀取html 文件 // 告訴客戶端 寫的是一個html 文件 bos.write("HTTP/1.1 200 OK\r\n".getBytes()); bos.write("Content-Type:text/html\r\n".getBytes()); bos.write("\r\n".getBytes()); int len = 0 ; while ((len = bis.read())!=-1){ //使用BufferedOutputStream---》write把讀取到了html文件 寫到客戶端顯示 bos.write(len); } //釋放資源 bos.close(); bis.close(); socket.close(); server.close(); } }