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}
根据域名获取计算机的信息
根据域名获取计算机信息时需要使用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}
根据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}
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}
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}
通过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);
1516 } catch (Exception e) {
17 e.printStackTrace();
18 }
19 }
20}
相关文章:
JAVA深化篇_36—— Java网络编程中的常用类
Java网络编程中的常用类 Java为了跨平台,在网络应用通信时是不允许直接调用操作系统接口的,而是由java.net包来提供网络功能。下面我们来介绍几个java.net包中的常用的类。 InetAddress的使用 作用:封装计算机的IP地址和DNS(没…...
python操作链接数据库和Mysql中的事务在python的处理
python操作数据库 pymysql模块: pip install pymysql作用:可以实现使用python程序链接mysql数据库,且可以直接在python中执行sql语句 添加操作 import pymysql #1.创建链接对象c conn pymysql.Connect(host127.0.0.1,#数据库服务器主机地址port3306, #mysql的端口…...
【qemu逃逸】XCTF 华为高校挑战赛决赛-pipeline
前言 虚拟机用户名: root 无密码 设备逆向与漏洞分析 程序没有去符合, 还是比较简单. 实例结构体如下: 先总体说一下流程: encode 为 base64 编码函数, decode 为 base64 解码函数. 然后 encPipe 和 decPipe 分别存放编码数据和解码数据, 分别有四个: 其中 EncPipeLine 中…...
muduo源码剖析之TcpClient客户端类
简介 muduo用TcpClient发起连接,TcpClient有一个Connector连接器,TCPClient使用Conneccor发起连接, 连接建立成功后, 用socket创建TcpConnection来管理连接, 每个TcpClient class只管理一个TcpConnecction,连接建立成功后设置相应的回调函数…...
C语言——switch语句判断星期
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int day 0;scanf("请输入1-7之间的整数:%d",&day);switch(day){case 1:printf("星期一\n");break;case 2:printf("星期二\n");break;case 3:printf(&quo…...
栈回溯之CmBacktrace
简介 CmBacktrace (Cortex Microcontroller Backtrace)是一款针对 ARM Cortex-M 系列 MCU 的错误代码自动追踪、定位,错误原因自动分析的开源库。主要特性如下: 支持的错误包括: 断言(assert)…...
node插件MongoDB(二)——MongoDB的基本命令
文章目录 前言1. 数据库命令(1)显示所有数据库(2)切换指定数据库(若没有自动创建)(3)显示当前所在数据库(4)删除当前数据库 2.集合(表名ÿ…...
【Git】推送Github失败:remote: Permission to xxx/*.git denied to xxx
在github上,创建了token,推送代码报没权限 #设置token git remote set-url origin <your.token>github.com/<your.name>/hello-git.git#推送代码 #git push -u origin main remote: Permission to xxx/hello-git.git denied to xxx. fatal:…...
Flink -- 状态与容错
1、Stateful Operations 有状态算子: 有状态计算,使用到前面的数据,常见的有状态的算子:例如sum、reduce,因为它们在计算的时候都是用到了前面的计算的结果 总结来说,有状态计算并不是独立存在的…...
Linux C语言进阶-D15递归函数和函数指针
递归函数 指一个函数的函数体中直接或间接调用了该函数本身 执行过程分为两个过程: 递推过程:从原问题出发,按递归公式递推从未知到已知,最终达到递推终止条件 回归阶段:按递归终止条件求出结果,逆向逐步…...
LeetCode算法心得——全排列(回溯型排列)
大家好,我是晴天学长,排列型的回溯,需要的小伙伴可以关注支持一下哦!后续会继续更新的。💪💪💪 1) .全排列 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按…...
读取W25Q64的设备ID时输出0xff
发现的问题 读取W25Q64的设备ID时输出0xff 找到的不同解决方法 检查MISO和MOSI是否接对。MISO->DO,MOSI->DI检查程序在初始化spi时是否将SS拉高、SCK拉低如果是硬件spi那么检查SPI的初始化函数中,时钟极性SPI_CPOL误选为SPI_CPOL_Low࿰…...
【Docker】Docker 网络
引言 Docker是一个开源的应用容器引擎,它允许开发者将应用及其依赖打包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现虚拟化。Docker的主要优势之一是其网络功能,而网络功能的核心就是网络驱动…...
Flutter学习:使用CustomPaint绘制路径
Flutter学习:认识CustomPaint组件和Paint对象 Flutter学习:使用CustomPaint绘制路径 Flutter学习:使用CustomPaint绘制图形 Flutter学习:使用CustomPaint绘制文字 Flutter学习:使用CustomPaint绘制图片 drawPath 绘制路…...
软件模拟SPI协议的理解和使用编写W25Q64
SPI软件模拟的时序 SPI协议中,NSS、SCK、MOSI由主机产生,MISO由从机产生,在SCK每个时钟周期MOSI、MISO传输一位数据,数据的输入输出是同时进行的,所以读写数据也可以视作交换数据。所以读写时对数据位的控制都是用同一…...
SQLI手动注入和python sqlmap代码注入
sql教程: https://www.w3school.com.cn/sql/index.asp数据库: mysql oracle mssql常用方法 system_user() 系统用户名 user() 用户名 current_user() 当前用户名 session_user() 连接数据库的用户名 d…...
MemcachedRedis构建缓存服务器 (数据持久化,主从同步,哨兵模式)
Memcached/redis是高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web等应用的速度、 提高可扩展性。降低数据库读的压力 Nsql的优点:高可扩展性,分布式计算,低成本,…...
Python语法基础(变量 注释 数据类型 输入与输出 运算符 缩进)
目录 变量变量命名规则变量的类型变量的创建变量的作用域 注释的方法数据类型对象和引用的概念Number(数字)数据转换 输入与输出输入函数输出函数输出函数的end参数输出格式多行语句 运算符算术运算符赋值运算符三目运算符运算符的优先级 缩进缩进格式注意事项层级嵌套 变量 标…...
linux espeak语音tts;pyttsx3 ubuntu使用
整体使用espeak声音很机械不太自然 1、linux espeak语音tts 安装: sudo apt install espeak使用: #中文男声 espeak -v zh 你好 #中文女声 espeak -v zhf3 你好 #粤语男声 espeak -v zhy 你好注意:espeak -v zh 你好 (Full d…...
小白该如何学习Linux操作系统?
💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 Linux作为一种开源操作系…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
