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}

相关推荐
xixixi777771 分钟前
移动通信的基石——公共陆地移动网络
大数据·网络·安全·通信·plmn
深圳市恒讯科技2 分钟前
高防服务器支持哪些协议和端口防护?
运维·服务器·网络
Tao____3 分钟前
国产开源物联网平台
java·物联网·mqtt·iot·设备对接
uup3 分钟前
RabbitMQ 在 Java 应用中消费者无法连接问题
java·rabbitmq
虹科网络安全5 分钟前
艾体宝案例 | 从“被动合规”到“主动防御”:Capitec如何用KnowBe4安全意识平台重塑金融安全防线
网络·安全·金融
做cv的小昊7 分钟前
在NanoPC-T6开发板上通过USB串口通信实现光源控制功能
java·后端·嵌入式硬件·边缘计算·安卓·信息与通信·开发
后台开发者Ethan10 分钟前
py文件被初始化执行了2次
python
a31582380610 分钟前
Linux部署Python Django工程和Node工程,使用宝塔面板
linux·服务器·python·django·node·strapi·宝塔面板
敲代码的嘎仔12 分钟前
LeetCode面试HOT100——160. 相交链表
java·学习·算法·leetcode·链表·面试·职场和发展
B站计算机毕业设计之家12 分钟前
机器学习:python智能电商推荐平台 大数据 spark(Django后端+Vue3前端+协同过滤 毕业设计/实战 源码)✅
大数据·python·spark·django·推荐算法·电商