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地址,计算机名等信息。

java 复制代码
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}
根据域名获取计算机的信息

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

java 复制代码
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}
根据IP获取计算机的信息

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

java 复制代码
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}

InetSocketAddress的使用

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

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

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

java 复制代码
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}

URL的使用

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

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

java 复制代码
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}
通过URL实现最简单的网络爬虫
java 复制代码
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}

相关推荐
CUIYD_198913 小时前
Eclipse 常用搜索功能汇总
java·ide·eclipse
java1234_小锋13 小时前
Scikit-learn Python机器学习 - 特征降维 压缩数据 - 特征提取 - 主成分分析 (PCA)
python·机器学习·scikit-learn
java1234_小锋13 小时前
Scikit-learn Python机器学习 - 特征降维 压缩数据 - 特征提取 - 线性判别分析 (LDA)
python·机器学习·scikit-learn
野犬寒鸦14 小时前
力扣hot100:相交链表与反转链表详细思路讲解(160,206)
java·数据结构·后端·算法·leetcode
星马梦缘14 小时前
计算机网络4 第四章 网络层——网络间的通信问题(省际之间如何规划信件运输路线)
网络·计算机网络·路由·ip地址·子网掩码·icmp·ipv4/ipv6
思辨共悟14 小时前
Python的价值:突出在数据分析与挖掘
python·数据分析
ytadpole14 小时前
揭秘设计模式:工厂模式的五级进化之路
java·设计模式
计算机毕业设计木哥14 小时前
计算机毕设选题:基于Python+Django的B站数据分析系统的设计与实现【源码+文档+调试】
java·开发语言·后端·python·spark·django·课程设计
失散1314 小时前
分布式专题——1.2 Redis7核心数据结构
java·数据结构·redis·分布式·架构
用户37215742613515 小时前
Python 实现 HTML 转 Word 和 PDF
java