模擬_BS服務器代碼實現

這裏僅僅需要編輯服務器的代碼,因爲瀏覽器就可以是客戶端對象

實現步驟:

1.將已存在的靜態頁面對象放在 項目下
2.創建server套接字
3.實現服務器一直開啓的狀態
4.開啓多線程技術,提高效率

 //創建服務器ServerSocket對象
        ServerSocket server = new ServerSocket(8080);
        while (true){
            //使用accept獲取Socket
            Socket sc = server.accept();

            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        //獲取InputStream網絡字節輸入流
                        InputStream is = sc.getInputStream();

                        if (is != null) {
                            //創建緩衝流 , 轉換爲字符緩衝輸入流
                            BufferedReader bw = new BufferedReader(new InputStreamReader(is));
                            //GET /IOTest/web/index.html HTTP/1.1
                            String line;
                            line = bw.readLine();
                            //分割路勁
                            String[] path = line.split(" ");
                            //獲取路徑    IOTest/web/index.html
                            String filename = path[1].substring(1);  //filename = IOTest/web/index.html
                            System.out.println("filename:" + filename);
                            //創建本地字節輸入流 FileInputStream
                            FileInputStream fis = new FileInputStream(filename);

                            OutputStream os = sc.getOutputStream();

                            //寫入Http響應 
                            os.write("HTTP/1.1 200 OK\r\n".getBytes());
                            os.write("Content-Type:text/html\r\n".getBytes());
                            //必須要寫入空行,否則瀏覽器不解析
                            os.write("\r\n".getBytes());
                            //一讀一寫瀏覽器

                            int len = 0;
                            byte[] bytes = new byte[1024];
                            while ((len = fis.read(bytes)) != -1) {
                                //寫入服務器
                                os.write(bytes, 0, len);
                            }
                            fis.close();
                            sc.close();
                        }

                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章