java网络编程基础——基本网络支持
基本网络支持
java.net包主要为网络编程提供支持。
1、InetAddress
InetAddress类代表IP地址,还有两个子类:Inet4Address、Inet6Address。
package net; import java.io.IOException; import java.net.InetAddress; public class InetAddressTest { public static void main(String[] args) throws IOException { //根据主机获取InetAddress InetAddress ip = InetAddress.getByName("www.ruandb.top"); //判断IP是否可达 System.out.println("ruandb是否可达:"+ip.isReachable(1000));//ruandb是否可达:false //获取IP字符串 System.out.println(ip.getHostAddress());//47.98.194.49 //根据Ip地址获取InetAddress InetAddress local = InetAddress.getByAddress(new byte[] {127,0,0,1}); //判断IP是否可达 System.out.println("ruandb是否可达:"+local.isReachable(2000));//ruandb是否可达:true //获取InetAddress实例对应的全限定域名 System.out.println(local.getCanonicalHostName());//127.0.0.1 } }
2、URLDecoder和URLEncoder
当URL地址里包含非西欧字符的字符串时,系统会将这些非西欧字符转换成特殊字符串,这中特殊字符串称为 application/x-www-form-urlencoded MIME字符串。
URLDecoder和URLEncoder主要就是用于普通字符串和application/x-www-form-urlencoded MIME字符串的转换。
package net; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; public class URLDecoderTest { public static void main(String[] args) throws UnsupportedEncodingException { // 将application/x-www-form-urlencoded MIME字符串转换成普通字符串 String keyWord = URLDecoder.decode("%E5%8C%97%E4%BA%AC%E8%B7%AF","UTF-8"); System.out.println(keyWord);//北京路 String urlStr = URLEncoder.encode("北京路", "UTF-8"); System.out.println(urlStr);//%E5%8C%97%E4%BA%AC%E8%B7%AF } }
3、URL和URLConnection
URL对象代表统一资源定位器,它是指向互联网资源的指针。
JDK中还提供了一个URI类,代表统一的资源标识符,不能用于定位任何资源,它的唯一作用就是解析。
package net; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; public class URLTest { public static void main(String[] args) throws IOException { URL url = new URL("http://10.145.198.143:8081/ords/data_service/eda_src/v1.0/tbAddressTags/count?address=AA"); System.out.println(url.getFile());// 获取URL资源名:/ords/data_service/eda_src/v1.0/tbAddressTags/count?address=AA System.out.println(url.getHost());// 获取URL主机名:10.145.198.143 System.out.println(url.getPath());// 获取URL路径部分:/ords/data_service/eda_src/v1.0/tbAddressTags/count System.out.println(url.getPort());// 获取URL端口号:8081 System.out.println(url.getProtocol());// 获取URL协议名称:http System.out.println(url.getQuery());// 获取URL查询字符串部分:address=AA //获取url连接 URLConnection con = url.openConnection(); ; try ( InputStream inputStream = con.getInputStream();)//获取资源输入流 { byte[] bbuf = new byte[1024]; int hasRead = 0; while((hasRead =inputStream.read(bbuf)) > 0) { System.out.print(new String(bbuf,0,hasRead)); } } catch (Exception e) { e.printStackTrace(); } System.out.println(); try ( InputStream input = url.openStream();)//打开连接获取资源输入流 { byte[] bbuf = new byte[1024]; int hasRead = 0; while((hasRead =input.read(bbuf)) > 0) { System.out.print(new String(bbuf,0,hasRead)); } } catch (Exception e) { e.printStackTrace(); } } }