14-3 网络编程 ---- 通信要素1: IP和端口号

本文介绍了网络编程中的关键概念,包括IP地址的作用、分类(IPv4、IPv6)、端口号的范围及分类,以及InetAddress类在Java中的使用。通过InetAddress的静态方法获取IP地址和主机名,并演示了如何通过IP和域名创建InetAddress实例。同时,讨论了端口号如何与IP地址结合形成网络套接字进行数据传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

14-3 网络编程 ---- 通信要素1: IP和端口号

一、网络编程中有两个主要的问题:
1.如何准确地定位网络上一台或多台主机;定位主机上的特定的应用
2.找到主机后如何可靠高效地进行数据传输

二、网络编程中的两个要素:
1.对应问题一:IP和端口号
2.对应问题二:提供网络通信协议:TCP/IP参考模型(应用层、传输层、网络层、物理+数据链路层)

三、IP 地址:InetAddress
1.唯一的标识 Internet 上的计算机(通信实体),在Java中使用InetAddress类代表IP
2.本地回环地址(hostAddress):127.0.0.1 主机名(hostName):localhost
3.IP地址分类方式1:IPV4 和 IPV6
(1)IPV4:4个字节组成,4个0-255。大概42亿,30亿都在北美,亚洲4亿。2011年初已经用尽。以点分十进制表示,如192.168.0.1
(2)IPV6:128位(16个字节),写成8个无符号整数,每个整数用四个十六进制位表示,数之间用冒号(:)分开,如:3ffe:3201:1401:1280:c8ff:fe4d:db39:1984
4.IP地址分类方式2:公网地址(万维网使用)和私有地址(局域网使用)。192.168.开头的就是私有址址,范围即为192.168.0.0–192.168.255.255,专门为组织机构内部使用
5.特点:不易记忆
6.域名: www.baidu.com、www.mi.com、www.sina.com、www.jd.com、www.vip.com
7.本地回路地址(本机):127.0.0.1 对应着:localhost
8.如何实例化InetAddress:两个方法:getByName(String host) 、 getLocalHost()
两个常用方法:getHostName() / getHostAddress()

四、端口号标识正在计算机上运行的进程(程序)
1.不同的进程有不同的端口号
2. 范围:被规定为一个 16 位的整数 0~65535。
3.端口分类:
(1)公认端口:0 ~ 1023。被预先定义的服务通信占用(如:HTTP占用端口80,FTP占用端口21,Telnet占用端口23)
(2)注册端口:1024 ~ 49151。分配给用户进程或应用程序。(如:Tomcat占用端口8080,MySQL占用端口3306,Oracle占用端口1521等)。
(3)动态/私有端口:49152~65535。
4.端口号与IP地址的组合得出一个网络套接字:Socket。
5.要求:不同的进程有不同的端口号

在这里插入图片描述
五、InetAddress类
1.Internet上的主机有两种方式表示地址:
(1)域名(hostName):www.atguigu.com
(2)IP 地址(hostAddress):202.108.35.210

2.InetAddress类主要表示IP地址,两个子类:Inet4Address、Inet6Address。
3.InetAddress 类 对 象 含 有 一 个 Internet 主 机 地 址 的 域 名 和 IP 地 址 :www.atguigu.com 和 202.108.35.210。
4.域名解析:域名容易记忆,当在连接网络时输入一个主机的域名后,域名服务器(DNS)负责将域名转化成IP地址,这样才能和主机建立连接。
5.InetAddress类没有提供公共的构造器,而是提供了如下几个静态方法来获取InetAddress实例
(1)public static InetAddress getLocalHost()
(2)public static InetAddress getByName(String host)
6.InetAddress提供了如下几个常用的方法
(1)public String getHostAddress():返回 IP 地址字符串(以文本表现形式)。
(2)public String getHostName():获取此 IP 地址的主机名
(3)public boolean isReachable(int timeout):测试是否可以达到该地址

代码:

package java1;

import java.net.InetAddress;
import java.net.UnknownHostException;

public class InetAddressTest {
    public static void main(String[] args) {
        try {
            //File file = new File("hello");
            InetAddress inet1 = InetAddress.getByName("192.168.10.14");
            System.out.println(inet1);

            InetAddress inet2 = InetAddress.getByName("www.baidu.com");
            System.out.println(inet2);

            InetAddress inet3 = InetAddress.getByName("127.0.0.1");
            System.out.println(inet3);

            //获取本机ip
            InetAddress inet4 = InetAddress.getLocalHost();
            System.out.println(inet4);

            //getHostName()
            System.out.println(inet2.getHostName());
            //getHostAddress()
            System.out.println(inet2.getHostAddress());

        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
}

输出:

/192.168.10.14
www.baidu.com/180.101.49.11
/127.0.0.1
LAPTOP-3GL1DD8P/192.168.1.6
www.baidu.com
180.101.49.11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YY鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值