JAVA入门————网络编程UDP/TCP —IP地址—端口

网络编程

  • 定义:网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的——————发送端装包 接收端解包
  • 计算机网络:计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现==资源共享和信息传递==的计算机系统

————网络编程 的目的?
————传播交流信息 数据交换 通信 eg;电台

网络编程的条件?
————————需要准确的定位一台主机

  1. IP地址:eg:192.168.3.25
  2. 端口号
  3. 定位到计算机上的某个资源(软件)
网络通信
  1. 需要先连接上一台计算机:需要IP地址和端口号
  2. 通过各种通信协议进行通信

IP地址——InetAddress

  • 定义:IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异
  • 作用:准确定位网络上唯一的一台计算机 eg:身份证
  • 127.0.0.1 :代表本机IP localhost
  • IP地址分类
  1. 通过IP地址分类

IPV4 :互联网通信协议第四版 127.0.0.1 由四个字节组成 32位
IPV6 :互联网通信协议第六版 128位 是IPv4地址长度的4倍 8个无符号整数

  1. 通过公网或者私网分类

公网:互联网使用
私网:局域网使用 eg:192.168.xx.xx—— 专门给组织内部使用的

ABCDE类公网:
A类:(1.0.0.0-126.0.0.0)(默认子网掩码:255.0.0.0或 0xFF000000)—————用于大型网络(政府机关)
B类:(128.1.0.0-191.255.0.0)(默认子网掩码:255.255.0.0或0xFFFF0000)——————用于中等规模网络(大中型企业)
C类:(192.0.1.0-223.255.255.0)(子网掩码:255.255.255.0或 0xFFFFFF00)——————用于小型网络(个人)
D类:是多播地址。该类IP地址的最前面为“1110”,所以地址的网络号取值于224~239之间。一般用于多路广播用户
E类:是保留地址。该类IP地址的最前面为“1111”,所以地址的网络号取值于240~255之间

  • ipconfig查出来的是本机的IP地址,也就是内网私有地址,此类地址仅在局域网使用,不能联通外网。
  • 百度搜索IP查出来的地址是你上网的公有地址,并不是你主机的地址,而是运营商(电信或联通)分给你的地址,用于连接互联网。
域名
  • 定义:又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识————用于方便记忆IP
  • 域名后缀.com、.net、.cn、.edu、.top、.xyz
  • 特点:独一无二 不可重复 先注册先得

InetAddress类——表示IP地址 (不包括端口号)

  • 方法——用InetAddress类本身调用
getByName(String host) ——在给定主机名情况下确定主机的 IP 地址
getLocalHost() ——返回本地主机。
getHostName() —— 获取此 IP 地址的主机名。
getHostAddress() ——返回 IP 地址字符串(以文本表现形式)
getCanonicalHostName() ——获取此 IP 地址的完全限定域名。
getAllByName(String host) ——在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。
  • 注意:InetAddress 没有构造方法 只能用静态方法返回它本身

需求:获得本机IP

public class IPDemo {
    public static void main(String[] args) throws UnknownHostException {
    ———————————— 查询本机地址三种方法
        InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1");
        InetAddress inetAddress2 = InetAddress.getByName("localhost");
        InetAddress inetAddress3 = InetAddress.getLocalHost();
        System.out.println(inetAddress1);——————/127.0.0.1
        System.out.println(inetAddress2);——————localhost/127.0.0.1
        System.out.println(inetAddress3);——————DESKTOP-BDOSH56/169.254.148.5
    ————————————查询百度网站IP地址
        InetAddress inetAddress4 = InetAddress.getByName("www.baidu.com");
        System.out.println(inetAddress4);————————www.baidu.com/14.215.177.39
    ————————————常用方法
        System.out.println(inetAddress4.getCanonicalHostName());// 获得规范的名字————14.215.177.39
        System.out.println(inetAddress4.getHostAddress());// 获得IP————14.215.177.39
        System.out.println(inetAddress4.getHostName());// 获得自己电脑的名字 域名——www.baidu.com
    }
}

端口Port

  • 定义:设备与外界通讯交流的出口 表示计算机上一个程序的进程
  • 单个协议下端口号不能冲突:不同的端口有不同的端口号 用来区分软件
  • 如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536个

分类

  1. 公认端口——0-1023——公有
    eg:http:后加80
    eg:https:后加443(更安全)
    eg:ftp : 后加21
    eg:telent: 后加23
  2. (程序员)注册端口——1024-49151——分配给用户或者程序
    eg:- Tomcat : 8080
    eg:MySQL : 3306
    eg:Oracle :1521
  3. (私有)动态端口——49152-65535
常见DOS命令
  • netstat -ano ————查看所有的端口
  • netstat -ano|findstr “5900” ————查看指定的端口
  • tasklist|findstr “8696” ————查看指定端口的进程
  • Ctrl+ shift + ESC————打开任务管理器

InetSocketAddress类

InetSocketAddress是SocketAddress的实现子类
在使用Socket来连接服务器时最简单的方式就是直接使用IP和端口,但Socket类中的connect方法并未提供这种方式,而是使用SocketAddress抽象类的实现类 InetSocketAddress来向connect方法传递服务器的IP和端口。
SocketAddress只是个抽象类,它除了有一个默认的构造方法外,其它的方法都是abstract的,因此,我们必须使用SocketAddress的子类来建立SocketAddress对象,也就是唯一的子类InetSocketAddress

  • 返回Socket地址——IP+端口号
  • 定义:此类实现 IP 套接字地址(IP 地址 + 端口号) 它还可以是一个对(主机名 + 端口号)

一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。
——————主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。
——————实际上是通过“IP地址+端口号”来区分不同的服务的。

  • 构造方法
InetSocketAddress(InetAddress addr, int port) ——根据 IP 地址和端口号创建套接字地址。
InetSocketAddress(String hostname, int port) ——根据主机名和端口号创建套接字地址。
public class InetSocketAddressDemo {
    public static void main(String[] args) {
        InetSocketAddress inetSocketAddress = new InetSocketAddress("127.0.0.1", 8080);
        InetSocketAddress inetSocketAddress1 = new InetSocketAddress("localhost", 8080);
        System.out.println(inetSocketAddress);
        System.out.println(inetSocketAddress1);
        System.out.println(inetSocketAddress.getAddress());————获得主机IP地址
        System.out.println(inetSocketAddress.getHostName());————获得主机名字
        System.out.println(inetSocketAddress.getPort());————获得端口号
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值