java基础篇---网络编程(IP与URL)
一:IP与InetAddress
在Java中支持网络通讯程序的开发,主要提供了两种通讯协议:TCP协议,UDP协议
- 可靠地连接传输,使用三方握手的方式完成通讯
- 不可靠的连接传输,传输的时候接受方不一定可以接受的到
在Java中的所有网络程序的开发类都在java.net包中存在
IP地址简介
- IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
IP地址表示
- IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6)
IP地址格式
- IP地址=网络地址+主机地址
- 网络号:用于识别主机所在的网络
- 主机号:用于识别该网络中的主机
IP地址中存在掩码的功能主要区分网络号和主机号
IP地址分类
类别
|
最大网络数
|
IP地址范围
|
最大主机数
|
私有IP地址范围 |
A
|
126(2^7-2)
|
0.0.0.0-127.255.255.255
|
16777214
|
10.0.0.0-10.255.255.255
|
B
|
16384(2^14)
|
128.0.0.0-191.255.255.255 |
65534
|
172.16.0.0-172.31.255.255 |
C
|
2097152(2^21)
|
192.0.0.0-223.255.255.255 |
254
|
192.168.0.0-192.168.255.255 |
特殊的网址
- 每一个字节都为0的地址(“0.0.0.0”)对应于当前主机;
- IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址;
- IP地址中凡是以“11110”开头的E类IP地址都保留用于将来和实验使用。
- IP地址中不能以十进制“127”作为开头,该类地址中数字127.0.0.1到127.255.255.255用于回路测试,如:127.0.0.1可以代表本机IP地址,用“http://127.0.0.1”就可以测试本机中配置的Web服务器。
- 网络ID的第一个8位组也不能全置为“0”,全“0”表示本地网络。
InetAddress
InetAddress类主要表示IP地址,这个类有两个子类:Inet4Address,Inet6Address,一个用于表示IPV4,另一个表示IPV6协议
随着网络上的主机越来越多,IPV4地址不足够表示,然后产生了IPV6了
InetAddress类的具体方法可查询API
本机IP查询
package com.oumyye.网络编程;
import java.net.InetAddress ; public class InetAddressDemo{
public static void main(String args[]) throws Exception {// 所有异常抛出
InetAddress locAdd = null ;
locAdd = InetAddress.getLocalHost() ;// 得到本机
System.out.println("本机的IP地址:" + locAdd.getHostAddress()) ;
System.out.println("本机是否可达:" + locAdd.isReachable(5000)) ;
}
};
URL
统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。,可以直接使用此类找到互联网上的资源
package com.oumyye.网络编程; import java.net.URL ;
import java.io.InputStream ;
import java.util.Scanner ;
public class URLDemo{
public static void main(String args[]) throws Exception { // 所有异常抛出
URL url = new URL("http","www.baidu.com",80,"/") ;
InputStream input = url.openStream() ; // 打开输入流
Scanner scan = new Scanner(input) ; // 实例化Scanner类
scan.useDelimiter("\n") ; // 设置读取分隔符
while(scan.hasNext()){
System.out.println(scan.next()) ;
}
}
};
URLConnection是封装远程网络资源的一般方法类,通过它可以与远程服务器连接,检查远程资源的一些属性
package com.oumyye.网络编程; import java.net.URL ;
import java.net.URLConnection ;
import java.io.InputStream ;
import java.util.Scanner ;
public class URLConnectionDemo{
public static void main(String args[]) throws Exception { // 所有异常抛出
URL url = new URL("http://www.oumyye.com") ;
URLConnection urlCon = url.openConnection() ; // 建立连接
System.out.println("内容大小:" + urlCon.getContentLength()) ;
System.out.println("内容类型:" + urlCon.getContentType()) ;
}
};
URLEncoder与URLDecocder
具体内容
Encoder最早是从电报中而来,使用Encoder进行编码,而使用Decoder进行解码操作在网络中常存在这样的编码和解码的操作。
在使用URL访问的时候,经常会看到在地址之后会有很多其他的附带信息。
例如:http://www.baidu.com/index.php?tn=87041025_adr&ch=33
编码实例
package com.oumyye.网络编程;
import java.net.URLDecoder ;
import java.net.URLEncoder ;
public class CodeDemo{
public static void main(String args[]) throws Exception{
String keyWord = "偶my耶" ;
String encod = URLEncoder.encode(keyWord,"UTF-8") ; // 进行编码的操作
System.out.println("编码之后的内容:" + encod) ;
String decod = URLDecoder.decode(encod,"UTF-8") ; // 进行解码操作
System.out.println("解码之后的内容:" + decod) ;
}
};
java基础篇---网络编程(IP与URL)的更多相关文章
- java基础篇---网络编程(TCP程序设计)
TCP程序设计 在Java中使用Socket(即套接字)完成TCP程序的开发,使用此类可以方便的建立可靠地,双向的,持续的,点对点的通讯连接. 在Socket的程序开发中,服务器端使用serverSo ...
- java基础篇---网络编程(UDP程序设计)
UDP程序设计 在TCP的索引操作都必须建立可靠地连接,这样一来肯定会浪费大量的系统性能,为了减少这种开销,在网络中又提供了另外一种传输协议---UDP,不可靠的连接,这种协议在各个聊天工具中被广泛的 ...
- 黑马程序员:Java基础总结----网络编程
黑马程序员:Java基础总结 网络编程 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 网络编程 网络通讯要素 . IP地址 . 网络中设备的标识 . 不易记忆,可用 ...
- 黑马程序员——JAVA基础之网络编程
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 网络编程 网络模型:OSI参考模型和TCP/IP参考模型 网络通讯三要素: IP地址:InetA ...
- java基础知识——网络编程、IO流
IO流 字节流:处理字节数据的流对象,计算机中最小数据单元就是字节.InputStream OutputStream 字符流:字符编码问题,将字节流和编码表封装成对象就是字符流.Reader Writ ...
- 【Java基础】网络编程
网络编程 网络编程概述 网络编程的目的:直接或简洁地通过网络协议与其他计算机实现数据交换,进行通讯. 网络编程的两个主要问题: 如果准确地定位网络上一台或多台主机,并定位主机上的特定应用: 找到主机后 ...
- Java基础之网络编程
网络编程:1.网络编程概述 (1)网络模型 OSI参考模型 TCP/IP参考模型 (2)网络通讯要素 IP地址 端口号 传输协议 (3)网络通讯前提: **找到对方IP **数据要发送到指定端口.为了 ...
- java基础:网络编程TCP,URL
获取域名的两种方法: package com.lanqiao.java.test; import java.net.InetAddress;import java.net.UnknownHostExc ...
- 黑马程序员——【Java基础】——网络编程
---------- android培训.java培训.期待与您交流! ---------- 一.网络模型概述 网络模型示意图: 说明: (1)数据的传输:在用户端,应用层的数据,经过层层封包,最后到 ...
随机推荐
- UIView的transform
iOS开发UIView的transform属性详解 本文主要是详解iOS开发UIView的transform属性 CGAffineTransform实际上是一个矩阵 | a, b, 0 | | c ...
- php数组添加元素的方法
PHP数组添加一个元素的方式: push(), arr[], Php代码 $arr = array(); array_push($arr, el1, el2 ... eln); 但其实有一种更直 ...
- Bitnami Redmine 中文附件名 报错修复
最近自己在服务器上搭了个redmine,用的是Bitnami的一键安装程序. 搭好后,运行得不错,居然还增加了负载均衡. 某天上传中文附件,打开报内部错误,去redmine官网看了下,果然有这个问题, ...
- android 蓝牙编程重点---如何发送和接收16进制数据
最近的android蓝牙开发项目也逐渐接近尾声,基本的功能都已经完成,只剩下界面的设计.现在真的是舒了一口气! 作为编程学习经验只有1年的菜鸟,这是我独自完成的商业性产品,而且还是涉及到与单片机蓝牙模 ...
- Facade 设计模式
目的 在一个子系统的一组接口上提供一个统一的接口.Facade 设计模式定义了一个更高级别的接口,使子系统更容易使用. 通过一个更加简洁的接口来包装一个复杂的子系统. 解决的问题 客户端需要一个简化的 ...
- 在CentOS上编译安装MySQL 5.7.13步骤详解
MySQL 5.7主要特性 更好的性能 对于多核CPU.固态硬盘.锁有着更好的优化,每秒100W QPS已不再是MySQL的追求,下个版本能否上200W QPS才是用户更关心的. 更好的InnoDB存 ...
- Win7 64bit 安装VisualSVN出现报错:Servic 'VisualSVN Server' failed to start.解决的方法
问题描写叙述: Win7 64bit 安装VisualSVN时出现报错: Servic 'VisualSVN Server' failed to start.Please check VisualSV ...
- Java 8 – Convert a Stream to LIST
Java 8 – Convert a Stream to LIST package com.mkyong.java8; import java.util.List;import java.util.s ...
- jmeter 签名MD5生成
请求接口需要同时发送签名,签名定义为: 可以看出签名就是把用户的密码 .用户名 和签名key生成一个md5串就可以了 刚好jmeter 有个md5 生成,生成前需要获取name ,password k ...
- [Contiki系列论文之2]WSN的自适应通信架构
说明:本系列文章翻译自Contiki之父Adam Dunkels经典论文,版权归原作者全部. Contiki是由Adam Dunkels及其团队开发的系统.研读其论文是对深入理解Contiki系统的最 ...