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作为一种开源操作系…...
5个高级技巧完全指南:专业级AMD Ryzen系统调试与优化实战手册
5个高级技巧完全指南:专业级AMD Ryzen系统调试与优化实战手册 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: htt…...
低查重AI教材写作神器来袭,一键生成专业教材,节省大量编写时间!
在准备写教材之前,选择合适的工具就像是一场“纠结大戏”! 如果用办公软件来制作教材,功能显得特别单一,框架构建和格式设置都得手动完成;而要是选择一些专业的编写工具,操作就很复杂,学习起来…...
深度实战OBS背景移除:AI智能抠像技术重塑专业直播体验
深度实战OBS背景移除:AI智能抠像技术重塑专业直播体验 【免费下载链接】obs-backgroundremoval An OBS plugin for removing background in portrait images (video), making it easy to replace the background when recording or streaming. 项目地址: https://…...
FontCenter:三分钟解决AutoCAD字体缺失的终极方案
FontCenter:三分钟解决AutoCAD字体缺失的终极方案 【免费下载链接】FontCenter AutoCAD自动管理字体插件 项目地址: https://gitcode.com/gh_mirrors/fo/FontCenter 你是否曾经在打开AutoCAD图纸时,看到文字显示为问号或乱码?是否因为…...
Adobe GenP 3.0终极指南:免费解锁Adobe全家桶的完整教程
Adobe GenP 3.0终极指南:免费解锁Adobe全家桶的完整教程 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 想要免费使用Photoshop、Premiere Pro等专业Ado…...
Win11下CUDA和cuDNN安装避坑指南:从版本选择到环境变量,一次搞定TensorFlow/PyTorch环境
Win11深度学习环境搭建实战:CUDA与cuDNN精准配置手册 刚拿到新笔记本时,我兴冲冲地准备跑第一个PyTorch模型,却遭遇了"CUDA not available"的暴击。屏幕前的你可能也经历过这种绝望——明明按照教程一步步操作,却卡在环…...
向量搜索不再绕过ORM?EF Core 10原生向量查询语法全解析,从LINQ to Vector到混合语义+结构化联合检索
第一章:向量搜索不再绕过ORM?EF Core 10原生向量查询语法全解析,从LINQ to Vector到混合语义结构化联合检索EF Core 10 首次将向量搜索能力深度集成至 LINQ 查询管道,彻底终结此前需绕过 ORM、手动拼接 SQL 或调用数据库原生函数的…...
实战指南:Parse12306 自动化获取全国高速列车数据的3大核心技术解析
实战指南:Parse12306 自动化获取全国高速列车数据的3大核心技术解析 【免费下载链接】Parse12306 分析12306 获取全国列车数据 项目地址: https://gitcode.com/gh_mirrors/pa/Parse12306 Parse12306作为一款高效的开源工具,为开发者和数据分析师提…...
实用三步轻松实现Mac微信防撤回:完整保护重要信息不消失
实用三步轻松实现Mac微信防撤回:完整保护重要信息不消失 【免费下载链接】WeChatIntercept 微信防撤回插件,一键安装,仅MAC可用,支持v3.7.0微信 项目地址: https://gitcode.com/gh_mirrors/we/WeChatIntercept 你是否经历过…...
详解计算机网络三大数据交换技术:电路交换、报文交换、分组交换考点全复盘
详解计算机网络三大数据交换技术:电路交换、报文交换、分组交换考点全复盘 作者:培风图南以星河揽胜本文适配国考金管局计算机岗、软考网络工程师、计算机考研408、计算机等级考试、网工面试高频必考核心知识点,从一道经典易错题深度切入&…...
