Java中的網絡支持
針對網絡通信的不同層次,Java提供的網絡功能有四類
- InetAddress:用於標識網絡上的硬件資源
- URL:統一資源定位符,通過URL可以直接讀取或寫入網絡上的數據
- Sockets:使用TCP協議實現網絡通信的Socket相關的類
- 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();