JavaSocket的API應用

Java中的網絡支持

針對網絡通信的不同層次,Java提供的網絡功能有四類

  1. InetAddress:用於標識網絡上的硬件資源
  2. URL:統一資源定位符,通過URL可以直接讀取或寫入網絡上的數據
  3. Sockets:使用TCP協議實現網絡通信的Socket相關的類
  4. Datagram:使用UDP協議,將數據保存在數據報中,通過網絡進行通信

InetAddress的使用

//獲取本機的InetAddress實例
InetAddress address = InetAddress.getLocalHost();
System.out.println("本機名:"+address.getHostName());
System.out.println("IP地址:"+address.getHostAddress());

//獲取IP地址字節數組的形式
byte[] bytes = address.getAddress();
System.out.println("字節數組IP:"+bytes.toString());
//直接輸出InetAddress對象(本機名+IP)
System.out.println(address);

//根據主機名獲取InetAddress實例
InetAddress address1=InetAddress.getByName("USER-20170104RF");
//根據IP地址獲取InetAddress實例
InetAddress address1=InetAddress.getByName("192.168.0.1");

URL的使用

url由兩部分組成,協議名稱和資源名稱

//創建一個URL實例
URL i = new URL("http://www.baidu.com");
//根據上一個實例創建一個新實例,?後表示參數,#表示錨點
URL url = new URL(i,"/index.html?username=tom#test");

System.out.println("協議:"+url.getProtocol());
System.out.println("主機:"+url.getHost());
System.out.println("端口:"+url.getPort());
System.out.println("文件路徑:"+url.getPath());
System.out.println("文件名:"+url.getFile());
System.out.println("相對路徑:"+url.getRef());
System.out.println("查詢字符串 :"+url.getQuery());

使用URL讀取網頁內容

通過URL對象的openStream()方法可以得到指定資源的輸入流

        //創建一個URL實例
        URL url=new URL("http://www.baidu.com");
        //通過URL的openStream方法獲取URL對象所表示的資源的字節輸入流
        InputStream is=url.openStream();
        //字節輸入流轉化爲字符輸入流
        InputStreamReader isr=new InputStreamReader(is,"utf-8");
        //爲字符輸入流添加緩衝,提高效率
        BufferedReader br=new BufferedReader(isr);

        //讀取數據
        String data=br.readLine();
        while(data != null){
            System.out.println(data);
            data=br.readLine();
        }
        br.close();
        isr.close();
        is.close();
發佈了58 篇原創文章 · 獲贊 25 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章