Java网络编程

网络编程


  1. 网络编程中存在两个主要的问题
    • 如何准确的定位网络上的一台或多台主机
    • 找到主机后如何进行通信
  2. 网络编程的要素
    • IP和端口号
    • 网络通信协议

IP


Java中的IP类:InetAddress

  • 定位唯一一台网络上的计算机

  • 127.0.0.1 :本机(localhost)

  • IP地址的分类

    • ipv4/ipv6

      • IPV4:127.0.0.1 由4个字节组成
      • IPV6:128位,8个无符号正数
    • 公网(互联网)- 私网(局域网)

      • ABCD类地址
      • 192.168.xx.xx:专门给组织内部使用的
  • 域名:记忆IP问题(IP很值钱!!!)

在Java中使用查找IP

public class IpAddressTest {
    public static void main(String[] args) {
        try {
            //查找本机地址
            InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1");   //   /127.0.0.1
            System.out.println(inetAddress1);
            InetAddress inetAddress2 = InetAddress.getByName("localhost");   //   localhost/127.0.0.1
            System.out.println(inetAddress2);
            InetAddress inetAddress3 = InetAddress.getLocalHost();           //   DESKTOP-LIM1T42/172.18.1.164
            System.out.println(inetAddress3);

            //查询网站地址
            InetAddress inetAddress4 = InetAddress.getByName("www.baidu.com");   //   www.baidu.com/180.101.49.11
            System.out.println(inetAddress4);

            //常用方法
            System.out.println(inetAddress4.getAddress());
            System.out.println(inetAddress4.getHostAddress());
            System.out.println(inetAddress4.getCanonicalHostName());
            System.out.println(inetAddress4.getHostName());
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
}

端口


端口表示一个计算机上程序的进程

  • 不同的进程有不同的端口号,用来区分软件
  • 被规定0-65535
  • TCP,UDP:单个协议下,端口号不能冲突,不同协议可以一样
  • 端口分类
    • 公有端口 0 - 1023
      • HTTP : 80
      • HTTPS : 443
      • FTP : 21
      • Telent : 23
    • 程序注册端口 1024 - 49151
      • Tomcat : 8080
      • MySQL : 3306
      • Oracle : 1521
    • 动态、私有 :49152 - 65535

在Java中使用端口

public class InetSocketAddressTest {
    public static void main(String[] args) {
        InetSocketAddress isa = new InetSocketAddress("127.0.0.1",8080);
        System.out.println(isa);

        System.out.println(isa.getAddress());
        System.out.println(isa.getHostName());
        System.out.println(isa.getHostString());
        System.out.println(isa.getPort());
    }
}
上一篇:Java网络编程


下一篇:“从零开始搭建一台ROS开源迷你无人车”第三周学习记录