Java学习日记(网络篇)-1.IP地址编程

今天开始正式进入Java网络编程(Socket编程)的学习,Socket编程在Java中属于比较重要的一个环节,涉及到计算机网络知识。
由于没怎么学习过计算机网络,而且我的专业也没有开设这个课程,所以只能自己慢慢找相关的文章学一学。
像TCP/IP,Http协议都是必须要懂的内容。

从今天开始,会一步步记录Java网络编程的学习过程。加油~


(一) 概念 :

1. IP地址 : IP地址是给每个连接在因特网上的主机(或者路由器)分配一个在全世界范围内唯一的标识符,一个IP地址主要由两部分组成: 网络地址 + 主机地址.

网络地址由因特网权力机构分配,主机地址由各个网络的管理员统一分配.

IP地址的编制方案有两种:
  • IPV4 : 二进制表示,共32位(4个字节) 如: 192.168.3.1
  • IPV6: 二进制表示,共 128位(16个字节)
2.端口:IP地址仅仅能够具体标识到某台主机,而端口则表示与计算机的哪个进程通信。

根据IP地址找到是与哪台计算机通信,根据端口号找到是与该机器的哪个进程通信(一个进程可能有多个端口号。),通俗点说, IP地址就像一个公司大楼的地址,端口号就像是办公室的门牌号.这样才能精确的找到想要与之通信的对象。

端口的地址范围是十进制的0~65535

一些我们常用的默认端口号如:

  • HTTP : 80
  • Tomcat : 8080
  • FTP : 21
  • MySql : 3306
  • Sql Server : 1433
  • ...

码字好累,休息10秒钟。

(二)Java中获取IP的类 : InetAddress

InetAddress类表示 互联网协议 (IP) 地址。先贴上 InetAddress的api链接 : InetAddress.

此类比较特殊,没有构造方法。那怎么使用呢 ?

创建方法 :
  1. getByName(域名/IP字符串) 在给定主机名的情况下确定主机的 IP 地址
InetAddress ip = InetAddress.getByName("www.baidu.com"); //传入域名
InetAddress ip = InetAddress.getByName("115.239.210.27");//传入IP  
复制代码
  1. getLocalHost() 利用本机IP创建 ,返回本地主机
InetAddress local = InetAddress.getLocalHost(); //返回根据本机IP创建的InetAddress类
复制代码
  1. getAllByName() 在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组
InetAddress[] all = InetAddress.getAllByName("java.sun.com");  
复制代码
获得相关信息方法:
  1. getHostAddress() 返回 IP 地址字符串(以文本表现形式)
InetAddress ip = InetAddress.getByName("www.baidu.com");
System.out.println(ip.getHostAddress()); //返回 IP 地址字符串(以文本表现形式)。
复制代码

输出 :

115.239.211.112
复制代码
  1. getHostName() 获取此 IP 地址的主机名
InetAddress ip = InetAddress.getByName("www.baidu.com");
System.out.println(ip.getHostName());//获取此 IP 地址的主机名
复制代码

输出 :

www.baidu.com
复制代码
  1. isReachable(int timeOut) 测试是否可以达到该地址。实现尽最大努力试图到达主机,timeOut指定在规定时间内是否能连通。
    相当于ping功能,测试一下目标地址能否连通。
    测试能否在1000ms内连通百度
InetAddress ip = InetAddress.getByName("www.baidu.com");
System.out.println(ip.isReachable(1000));
复制代码

输出:

true
复制代码

测试能否在1ms内连接百度 :

InetAddress ip = InetAddress.getByName("www.baidu.com");
System.out.println(ip.isReachable(1));
复制代码

输出 :

false
复制代码

(end~)

转载于:https://juejin.im/post/5c9850d5e51d45698542d7be

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值