Java提供的网络支持

Java的基本网络支持

1、InetAddress

InetAddress 是 Java 用来代表 IP 地址的类,他还有两个子类:Inet4Address(IPV4)、Inet6Address(IPV6)。

InetAddress 类没有提供构造器,但可以通过两个静态方法获取实例:

import java.io.IOException;
import java.net.InetAddress;

public class mianfunc {
    public static void main(String[] args) throws IOException {
        //根据 主机名 获取
        InetAddress ip01 = InetAddress.getByName("www.baidu.com");
        测试是否可达,尽最大努力试图达到主机,但防火墙和服务器配置可能阻塞请求
        System.out.println("www.baidu.com 是否可达:" + ip01.isReachable(2000));
        //获取实例的 IP 地址字符串
        System.out.println(ip01.getHostAddress());

        //根据 IP 地址获取
        InetAddress ip02 = InetAddress.getByAddress(new byte[]{127,0,0,1});
        System.out.println(ip02.getCanonicalHostName());
    }
}

结果:

www.baidu.com 是否可达:true
39.156.66.18
activate.navicat.com

Process finished with exit code 0
2、URLEncoder、URLDecoder

普通字符串和 application/x-www-form-urlencoded MIMF 字符串之间的相互转换。

URL 地址里包含中文时,关键字就会变成所谓的"乱码"—— application/x-www-form-urlencoded MIMF 字符串。

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;

public class mainfunc02 {
    public static void main(String[] args) throws UnsupportedEncodingException {
        String encode = URLEncoder.encode("Java网络编程编码", "GBK");
        System.out.println(encode);

        // 采用不同字符集时,每个中文字符对应的字节数并不完全相同,所以需指定字符集
        String decode1 = URLDecoder.decode("Java%CD%F8%C2%E7%B1%E0%B3%CC%B1%E0%C2%EB", "GBK");
        System.out.println(decode1);
        String decode2 = URLDecoder.decode("Java%CD%F8%C2%E7%B1%E0%B3%CC%B1%E0%C2%EB", "utf-8");
        System.out.println(decode2);
    }
}

结果:

Java%CD%F8%C2%E7%B1%E0%B3%CC%B1%E0%C2%EB
Java网络编程编码
Java�����̱���

Process finished with exit code 0
3、URL、URLConnection、URLPermission

URI(Uniform Resource Identifiers):统一资源标识符

URL(Uniform Resource Locator):统一资源定位器,包含一个可打开到达该资源的输入流,URI的特例。

URL格式:protocol://host:port/resourceName 如:http://www.baidu.com

import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;

public class mainfunc03 {
    public static void main(String[] args) throws IOException {
        String myURL = "http://www.baidu.com";
        URL url = new URL(myURL);
        //获取该URL的资源名
        System.out.println(url.getFile());
        //获取该URL的主机名
        System.out.println(url.getHost());
        //获取该URL的路径部分
        System.out.println(url.getPath());
        //获取该URL的端口号
        System.out.println(url.getPort());
        //获取该URL的协议名称
        System.out.println(url.getProtocol());
        //获取该URL的查询字符串部分
        System.out.println(url.getQuery());

        // 返回一个 URLConnection 对象,它代表与该 URL 所引用的远程对象的连接
        URLConnection urlConnection = url.openConnection();
        // 打开与此URL的连接,并返回一个用于读取该URL资源的 InputStream
        // 可以方便的读取远程资源,甚至可以实现多线程下载
        InputStream inputStream = url.openStream();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值