• JAVA深化篇_36—— Java网络编程中的常用类


    Java网络编程中的常用类

    Java为了跨平台,在网络应用通信时是不允许直接调用操作系统接口的,而是由java.net包来提供网络功能。下面我们来介绍几个java.net包中的常用的类。

    InetAddress的使用

    作用:封装计算机的IP地址和DNS(没有端口信息)

    注:DNS是Domain Name System,域名系统。

    特点:

    这个类没有构造方法。如果要得到对象,只能通过静态方法:getLocalHost()、getByName()、 getAllByName()、 getAddress()、getHostName()

    获取本机信息

    获取本机信息需要使用getLocalHost方法创建InetAddress对象。getLocalHost()方法返回一个InetAddress对象,这个对象包含了本机的IP地址,计算机名等信息。

    1public class InetTest {
    2  public static void main(String[] args)throws Exception {
    3    //实例化InetAddress对象
    4    InetAddress inetAddress = InetAddress.getLocalHost();
    5    //返回当前计算机的IP地址
    6    System.out.println(inetAddress.getHostAddress());
    7    //返回当前计算机名
    8    System.out.println(inetAddress.getHostName());
    9   }
    10}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    根据域名获取计算机的信息

    根据域名获取计算机信息时需要使用getByName(“域名”)方法创建InetAddress对象。

    1public class InetTest2 {
    2  public static void main(String[] args)throws Exception {
    3    InetAddress inetAddress = InetAddress.getByName("www.baidu.com");
    4    System.out.println(inetAddress.getHostAddress());
    5    System.out.println(inetAddress.getHostName());
    6   }
    7}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    根据IP获取计算机的信息

    根据IP地址获取计算机信息时需要使用getByName(“IP”)方法创建InetAddress对象。

    1public class InetTest3 {
    2  public static void main(String[] args)throws Exception {
    3    InetAddress inetAddress = InetAddress.getByName("14.215.177.38");
    4    System.out.println(inetAddress.getHostAddress());
    5    System.out.println(inetAddress.getHostName());
    6   }
    7}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    InetSocketAddress的使用

    **作用:**包含IP和端口信息,常用于Socket通信。此类实现 IP 套接字地址(IP 地址 + 端口号),不依赖任何协议。

    InetSocketAddress相比较InetAddress多了一个端口号,端口的作用:一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。

    那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。

    1public class InetSocketTest {
    2  public static void main(String[] args) {
    3    InetSocketAddress inetSocketAddress = new InetSocketAddress("www.baidu.com",80);
    4    System.out.println(inetSocketAddress.getAddress().getHostAddress());
    5    System.out.println(inetSocketAddress.getHostName());
    6   }
    7}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    URL的使用

    IP地址标识了Internet上唯一的计算机,而URL则标识了这些计算机上的资源。 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。

    为了方便程序员编程,JDK中提供了URL类,该类的全名是java.net.URL,有了这样一个类,就可以使用它的各种方法来对URL对象进行分割、合并等处理。

    1public class UrlTest {
    2  public static void main(String[] args)throws Exception {
    3    URL url = new URL("https://www.itbaizhan.com/search.html?kw=java");
    4    System.out.println("获取与此URL相关联协议的默认端口:"+url.getDefaultPort());
    5    System.out.println("访问资源:"+url.getFile());
    6    System.out.println("主机名"+url.getHost());
    7    System.out.println("访问资源路径:"+url.getPath());
    8    System.out.println("协议:"+url.getProtocol());
    9    System.out.println("参数部分:"+url.getQuery());
    10   }
    11}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    通过URL实现最简单的网络爬虫
    1public class UrlTest2{
    2  public static void main(String[] args)throws Exception {
    3      URL url = new URL("https://www.baidu.com/");
    4      try (BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()))) {
    5        StringBuilder sb = new StringBuilder();
    6        String temp;
    7            /* 
    8             * 这样就可以将网络内容下载到本地机器。
    9             * 然后进行数据分析,建立索引。这也是搜索引擎的第一步。
    10             */
    11        while ((temp = br.readLine()) != null) {
    12          sb.append(temp);
    13         }
    14        System.out.println(sb);
    15
    
    16       } catch (Exception e) {
    17        e.printStackTrace();
    18       }
    19   }
    20}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

  • 相关阅读:
    设计模式学习(七):适配器模式
    ROS参数名称设置
    电脑系统重装后怎么用打印机扫描出文件?
    如何实现多任务管理
    MySQL在按照某个字段分组、排序加序号
    十分钟学会dapp开发之hardhat搭建
    Cpp知识点系列-结构语句
    word转PDF 版本不一样可能过程各种找不到文件路径,需要自行修改
    本地运行“李开复”的零一万物 34B 大模型
    【CSDN竞赛题解】判断题:脉冲调制编码(PCM),选择题:以下哪一种常见的文件格式与增量编码无关?哪一项不是自适应差分脉冲调制编码(ADPCM..,编程题:小球游戏,王子闯闸门
  • 原文地址:https://blog.csdn.net/guojiaqi_/article/details/134309066