瀏覽器輸入服務器端口號來訪問html網頁


在開始寫代碼之前,先要把准備工作做好:

    把學要的資料(即要顯示在網頁上的html文件 和圖片)放在Moudle的根目錄下,如圖:

    

 

package cn.kgc.cn.kgc.bs;
import java.io.IOException;
import java.net.ServerSocket;
import java.io.InputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.BufferedOutputStream;
import java.net.Socket;
public class Server {
    public static void main(String[] args) {
        try {
            //首先創建服務器的ServerSocket接口對象
            ServerSocket server=new ServerSocket(8888);
            while(true){
                //通過server的accept()方法來對網絡端進行監聽,並獲得網絡端Socket對象
                Socket socket=server.accept();
                //創建多線程,以提高效率
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try{
                            //獲得網絡字節輸入流,以便於讀取網絡端發送的地址請求
                            InputStream is=socket.getInputStream();
                            //使用BufferedReader把網絡字節輸入流包裝成網絡字符緩沖流,提高讀取效率
                            BufferedReader br=new BufferedReader(new InputStreamReader(is));
                            //讀取網絡端返回的字符串請求中的第一行
                            String line=br.readLine();
                            //對第一行內容進行分割,以便於下面獲取網絡端需要訪問的文件路徑
                            String[]split=line.split(" ");
                            /**
                             * 分割后的元素存放在數組中
                             * 對下標為1的元素進行截取
                             * 獲得學要的文件路徑
                             */
                            String sub=split[1].substring(1);
                            System.out.println(sub);
                            /**
                             * 需要使用服務器的本地字節輸入流
                             * 把文件按照得到的路徑寫到
                             * 服務器的內存中
                             * 然后使用網絡字節輸出流
                             * 把內存中的文件寫到網絡端
                             */
                            //把本地字節輸入流和網絡字節輸出流分別包裝成緩沖字符輸入流和字符輸出緩沖流
                            BufferedInputStream bis=new BufferedInputStream(new FileInputStream(sub));
                            BufferedOutputStream bos=new BufferedOutputStream(socket.getOutputStream());
                            int len=0;
                            //讀取文件
                            while((len=bis.read())!=-1){
                                //把文件寫到網絡端
                                bos.write(len);
                            }
                            //釋放資源呢
                            bos.close();
                            bis.close();
                            is.close();
                            socket.close();
                        }catch(IOException e){
                            e.printStackTrace();
                        }

                    }
                }).start();

            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM