java网络编程基础——基本网络支持
基本网络支持
java.net包主要为网络编程提供支持。
1、InetAddress
InetAddress类代表IP地址,还有两个子类:Inet4Address、Inet6Address。
package net; import java.io.IOException;
import java.net.InetAddress; public class InetAddressTest { public static void main(String[] args) throws IOException { //根据主机获取InetAddress
InetAddress ip = InetAddress.getByName("www.ruandb.top");
//判断IP是否可达
System.out.println("ruandb是否可达:"+ip.isReachable(1000));//ruandb是否可达:false
//获取IP字符串
System.out.println(ip.getHostAddress());//47.98.194.49
//根据Ip地址获取InetAddress
InetAddress local = InetAddress.getByAddress(new byte[] {127,0,0,1});
//判断IP是否可达
System.out.println("ruandb是否可达:"+local.isReachable(2000));//ruandb是否可达:true
//获取InetAddress实例对应的全限定域名
System.out.println(local.getCanonicalHostName());//127.0.0.1 }
}
2、URLDecoder和URLEncoder
当URL地址里包含非西欧字符的字符串时,系统会将这些非西欧字符转换成特殊字符串,这中特殊字符串称为 application/x-www-form-urlencoded MIME字符串。
URLDecoder和URLEncoder主要就是用于普通字符串和application/x-www-form-urlencoded MIME字符串的转换。
package net; import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder; public class URLDecoderTest { public static void main(String[] args) throws UnsupportedEncodingException { // 将application/x-www-form-urlencoded MIME字符串转换成普通字符串
String keyWord = URLDecoder.decode("%E5%8C%97%E4%BA%AC%E8%B7%AF","UTF-8");
System.out.println(keyWord);//北京路 String urlStr = URLEncoder.encode("北京路", "UTF-8");
System.out.println(urlStr);//%E5%8C%97%E4%BA%AC%E8%B7%AF
} }
3、URL和URLConnection
URL对象代表统一资源定位器,它是指向互联网资源的指针。
JDK中还提供了一个URI类,代表统一的资源标识符,不能用于定位任何资源,它的唯一作用就是解析。
package net; import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection; public class URLTest { public static void main(String[] args) throws IOException { URL url = new URL("http://10.145.198.143:8081/ords/data_service/eda_src/v1.0/tbAddressTags/count?address=AA");
System.out.println(url.getFile());// 获取URL资源名:/ords/data_service/eda_src/v1.0/tbAddressTags/count?address=AA
System.out.println(url.getHost());// 获取URL主机名:10.145.198.143
System.out.println(url.getPath());// 获取URL路径部分:/ords/data_service/eda_src/v1.0/tbAddressTags/count
System.out.println(url.getPort());// 获取URL端口号:8081
System.out.println(url.getProtocol());// 获取URL协议名称:http
System.out.println(url.getQuery());// 获取URL查询字符串部分:address=AA //获取url连接
URLConnection con = url.openConnection(); ;
try ( InputStream inputStream = con.getInputStream();)//获取资源输入流
{
byte[] bbuf = new byte[1024];
int hasRead = 0;
while((hasRead =inputStream.read(bbuf)) > 0) {
System.out.print(new String(bbuf,0,hasRead));
}
} catch (Exception e) {
e.printStackTrace();
} System.out.println(); try ( InputStream input = url.openStream();)//打开连接获取资源输入流
{
byte[] bbuf = new byte[1024];
int hasRead = 0;
while((hasRead =input.read(bbuf)) > 0) {
System.out.print(new String(bbuf,0,hasRead));
}
} catch (Exception e) {
e.printStackTrace();
} }
}
java网络编程基础——基本网络支持的更多相关文章
- java网络编程基础——TCP网络编程一
基于TCP协议的网络编程 TCP/IP协议是一种可靠的网络协议,它的通信的两端各自建立一个Socket,从而在通信的两端之间形成网络虚拟链路. Java使用Socket对象来代表两端的通信端口,并通过 ...
- 网络编程基础:网络基础之网络协议、socket模块
操作系统(简称OS)基础: 应用软件不能直接操作硬件,能直接操作硬件的只有操作系统:所以,应用软件可以通过操作系统来间接操作硬件 网络基础之网络协议: 网络通讯原理: 连接两台计算机之间的Intern ...
- java网络编程基础——TCP网络编程二
1.半关闭的Socket 前面的服务器和客户端通信时总是以行为最小数据单位,但是在某些协议里,通信的数据单位可能是多行的,当出现多行数据时就 出现一个问题:Socket输出流如何表示输出数据已经结束. ...
- java网络编程基础——TCP网络编程三
AIO实现非阻塞通信 java7 NIO2 提供了异步Channel支持,这种异步Channel可以提供更高效的IO,这种基于异步Channel的IO被称为异步IO(Asynchronous IO) ...
- 【Java基础】Java网络编程基础知识
什么是网络编程 网络编程是通过使用套接字来达到进程间通信目的,那什么是套接字呢?其实套接字是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的 ...
- Java网络编程和NIO详解开篇:Java网络编程基础
Java网络编程和NIO详解开篇:Java网络编程基础 计算机网络编程基础 转自:https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA 我们是幸运的,因为 ...
- Java网络编程基础(Netty预备知识)
今天在家休息,闲来无事,写篇博客,陶冶下情操~~~ =================我是分割线================ 最近在重新学习Java网络编程基础,以便后续进行Netty的学习. 整 ...
- 大数据学习笔记——Java篇之网络编程基础
Java网络编程学习笔记 1. 网络编程基础知识 1.1 网络分层图 网络分层分为两种模型:OSI模型以及TCP/IP网络模型,前者模型分为7层,是一个理论的,参考的模型:后者为实际应用的模型,具体对 ...
- java网络编程基础——网络基础
java网络编程 网络编程基础 1.常用的网络拓扑结构: 星型网络.总线网络.环线网络.树形网络.星型环线网络 2.通信协议的组成 通信协议通常由3部分组成: 语义部分:用于决定通信双方对话类型 语法 ...
随机推荐
- 英特尔内存革新助平安云 Redis 云服务降本增效
英特尔内存革新助平安云 Redis 云服务降本增效 英特尔 傲腾 数据中心级持久内存的引入,为平安云的降本增效开启了一条新的道路.通过对平安云 Redis 数据库产品的支持,用户能享受到性能优异且价格 ...
- 用 Flutter 和 Firebase 轻松构建 Web 应用
作者 / Very Good Ventures Team 我们 (Very Good Ventures 团队) 与 Google 合作,在今年的 Google I/O 大会上推出了 照相亭互动体验 ( ...
- 狂神说linux笔记:基本操作
Linux介绍 Linux的概述本文就不赘述了,如果想仔细了解的小伙伴可以百度Linux的历史或者看看狂神的原文.本文主要写linux的操作过程知识点. 狂神的原文如下: https://mp.wei ...
- 「题解」agc031_c Differ by 1 Bit
本文将同步发布于: 洛谷博客: csdn: 博客园: 简书: 题目 题目链接:洛谷 AT4693.AtCoder agc031_c. 题意概述 给定三个数 \(n,a,b\),求一个 \(0\sim ...
- 【VBA】类型转换
每个函数都可以强制将一个表达式转换成某种特定数据类型. 语法 CBool(expression) CByte(expression) CCur(expression) CDate(expression ...
- Nginx为什么能快到根本停不下来?
Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名.本文从底层原理分析 Nginx 为什么这么快! Nginx 的进程模型 Nginx 服务器,正常运行过程中: 多进程:一个 M ...
- Django(68)drf分页器的使用
前言 当后台返回的数据过多时,我们就要配置分页器,比如一页最多只能展示10条等等,drf中默认配置了3个分页面 PageNumberPagination:基础分页器,性能略差 LimitOffsetP ...
- NOIP模拟测试39,思维禁锢专场「工业题·玄学题·卡常题」
工业题 题解 抱歉,题解没时间写了 代码 #include<bits/stdc++.h> using namespace std; #define ll long long #define ...
- Golang学习(用代码来学习) - 第五篇
/** 并发控制:context的学习 */ func context_test() { PrintStartSeperator("context_test") ctx, canc ...
- Spring Boot下的一种导出Excel文件的代码框架
1.前言 在Spring Boot项目中,将数据导出成Excel格式文件是常见的功能.与Excel文件导入类似,此处也用代码框架式的方式实现Excel文件导出,使得代码具有可重用性,并保持导出数据 ...