zoukankan      html  css  js  c++  java
  • Java连载124-网络编程

    一、计算机网络基础

    1.网络通信协议有很多种,目前应用最广泛的就是TCP/IP协议(Transmission Control Protocal/Internet Protocal,传输控制协议/英特网互联协议),UDP(User Datagram Protocal,用户数据报协议),ICMP(Internet Control Message Protocal,英特网络控制报文协议)和一些其他协议族。

    2.基于TCP/IP的模型分成四个层次:

    (1)应用层;如:HTTPFTPDNS

    (2)传输层;如:TCPIP

    (3)网络层;如:IPICMPIGMP

    (4)链路层。如:驱动程序,接口

    3.具体功能如下:

    (1)链路层也称为网络接口层,该层负责监视数据在主机和网络之间的交换。事实上,TCPIP本身并未定义该协议,而是由参与互连的各网络使用自己的物理层和数据链路层协议与TCPIP模型的网络层进行连接;

    (2)网络层也称为网络互联层,是整个TCPIP的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络;

    (3)传输层主要使网络程序进行通信,在进行网络通信时,可以采用TCP也可以采用UDP.

    (4)应用层主要负责应用程序的协议,如HTTPFTP

    4.IP地址主要由两部分组成“网络.主机",IPv4使用4个字节构成,而IPv6使用16个字节构成

    5.IP地址主要分为五类,常见的有三类

    A类地址:由第一段的网络地址和其余三段主机地址组成,范围为:1.0.0.0~127.255.255.255

    B类地址:由前两段的网络地址和其余两段的主机地址组成,范围为:

    128.0.0.0~191.255.255.255

    C类地址:由前三段的网络地址和其余一段的主机地址组成,范围为:

    192.0.0.0~223.255.255.255

    另外还有一个回送地址127.0.0.1,指的是本机地址,该地址一般用于测试,例如执行ping 127.0.0.1用来测试本机TCPIP是否正常

    6.端口号有两个字节表示,范围0~65535,其中0~1023的端口号由操作系统的网络服务所占用,用户普通的应用程序要是使用1024以上的端口号,防止端口号被另一个应用程序占用。

    二、InetAddress

    1.JDK中提供了一个与IP地址相关的InetAddress类,该类用于封装一个IP地址,并且提供了一系列与IP地址相关的方法,

    方法

    说明

    InetAddress getByName(String host)

    参数host表示指定的主机,该方法用于在给定主机名的情况下确定主机IP​地址。

    InetAddress getLocalHost()

    静态方法,创建一个表示本地主机的InetAddress对象

    String getHostName()

    得到IP地址的主机名,如果是本机则是计算机名,如果不是本机则是主机名,如果没有域名则是IP地址​。

    boolean isReadchable(int timeout)

    判断在指定时间内地址是否可以到达

    String getHostAddress()

    成员方法,得到字符串格式的原始IP地址

    前两个方法用于获取该类的实例对象,第一个方法用于获得表示指定主机的InetAddress对象,第二个方法用于获得表示本机的InetAddress对象,通过InetAddress对象便可以获取指定主机名,IP地址等​。接下来演示一个案例

     

    package com.bjpowernode.java_learning;
    
    import java.net.InetAddress;
    
    ​
    
    public class D124_InetAddressMethod {
    
    ​
    
      public static void main(String[] args) throws Exception{
    
        InetAddress localAddress = InetAddress.getLocalHost();
    
        InetAddress remoteAddress = InetAddress.getByName("www.baidu.com");
    
        System.out.println("本机的IP地址:"+localAddress.getHostAddress());
    
        System.out.println("baidu的IP地址:"+remoteAddress.getHostAddress());
    
        System.out.println("3s是否可以达到:"+remoteAddress.isReachable(3000));
    
        System.out.println("baidu的主机名为:"+remoteAddress.getHostName());
    
      }
    
    }

     

    需要值得注意的是,getHostName()方法用于得到某个主机的域名,如果创建的InetAddress对象是用主机名创建的​,则将该主机名返回;否则,将根据IP地址反向查找的对应的主机名,如果​找到将其返回,否则返回IP地址。​

    三、源码

    D124_InetAddressMethod.java

    https://github.com/ruigege66/Java/blob/master/D124_InetAddressMethod.java

    2.CSDN:https://blog.csdn.net/weixin_44630050

    3.博客园:https://www.cnblogs.com/ruigege0000/

    4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

     

  • 相关阅读:
    Redis介绍
    getch
    gecher
    C语言中的sleep函数
    sleep
    C语言中的System()函数
    System的使用
    函数参数的传递方式
    C语言strlen()函数:返回字符串的长度
    strlen
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/13179945.html
Copyright © 2011-2022 走看看