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}

相关推荐
Kai HVZ14 分钟前
python爬虫----爬取视频实战
爬虫·python·音视频
古希腊掌管学习的神16 分钟前
[LeetCode-Python版]相向双指针——611. 有效三角形的个数
开发语言·python·leetcode
m0_7482448319 分钟前
StarRocks 排查单副本表
大数据·数据库·python
V+zmm1013423 分钟前
基于微信小程序的乡村政务服务系统springboot+论文源码调试讲解
java·微信小程序·小程序·毕业设计·ssm
B站计算机毕业设计超人26 分钟前
计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习
大数据·人工智能·爬虫·python·机器学习·课程设计·数据可视化
ProcessOn官方账号27 分钟前
如何绘制网络拓扑图?附详细分类解说和用户案例!
网络·职场和发展·流程图·拓扑学
路人甲ing..29 分钟前
jupyter切换内核方法配置问题总结
chrome·python·jupyter
游客52040 分钟前
opencv中的常用的100个API
图像处理·人工智能·python·opencv·计算机视觉
Oneforlove_twoforjob1 小时前
【Java基础面试题025】什么是Java的Integer缓存池?
java·开发语言·缓存
xmh-sxh-13141 小时前
常用的缓存技术都有哪些
java