网络编程(Network programming)

网络编程

1.1 概述

计算机网络

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

网络编程目的

传播信息(数据交换、通信)

1.2 网络通信的要素

  • IP 和 端口号
  • 网络通信协议

1.3 IP

  • 唯一定位一台网络上计算机
  • 127.0.0.1:本机localhost
  • ip地址的分类(IPV4 / IPV6)
  • 域名:记忆IP问题

1.4 端口

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

  • 不同进程有不同端口号,用于区分软件
  • 被规定 0 – 65535
  • (TCP) (UDP) 单个协议下,端口号不能冲突
  • 端口分类

    公用端口 0 – 1023

    HTTP: 80

    HTTPS: 443

    FTP: 21

    程序注册端口 1024 – 49151,分配给用户或者程序

    Tomcat: 8080

    MySQL: 3306

    Oracle: 1521

    动态、私有端口 49152 – 65535
     netstat -ano #查看所有端口 netstat -ano|findstr “端口号” #查看指定端口 tasklist|findstr “PID” #查看指定端口进程 Ctrl + Shift + Esc 快速打开任务管理器

  • 公用端口 0 – 1023

    HTTP: 80

    HTTPS: 443

    FTP: 21

  • HTTP: 80
  • HTTPS: 443
  • FTP: 21
  • 程序注册端口 1024 – 49151,分配给用户或者程序

    Tomcat: 8080

    MySQL: 3306

    Oracle: 1521

  • Tomcat: 8080
  • MySQL: 3306
  • Oracle: 1521
  • 动态、私有端口 49152 – 65535
     netstat -ano #查看所有端口 netstat -ano|findstr “端口号” #查看指定端口 tasklist|findstr “PID” #查看指定端口进程 Ctrl + Shift + Esc 快速打开任务管理器
 netstat -ano #查看所有端口 netstat -ano|findstr "端口号" #查看指定端口 tasklist|findstr "PID" #查看指定端口进程 Ctrl + Shift + Esc 快速打开任务管理器

1.5 通信协议

TCP/IP协议组:实际上一组协议

TCP:打电话

  • 连接,稳定
  • 三次握手 四次挥手
     A:你瞅啥 B:瞅你咋地 A:干一场  A:我要走了 B:你真的要走了吗 B:你真的真的要走了吗 A:我真的要走了
     
 A:你瞅啥 B:瞅你咋地 A:干一场  A:我要走了 B:你真的要走了吗 B:你真的真的要走了吗 A:我真的要走了

UDP:发短信

  • 不连接,不稳定

1.6 TCP

客户端

  • 连接服务器Socket
  • 发送消息
 //1.连接服务器 //获取服务端IP和端口号 InetAddress serverIP = InetAddress.getByName("localhost"); int port = 9999; //创建一个Socket连接 socket = new Socket(serverIP, port);  //2.发送消息 os = socket.getOutputStream(); os.write("客服端向服务端发送消息".getBytes());

服务端

  • 建立服务的端口
  • 等待用户的连接
  • 接受用户的消息
  //1.创建服务的端口 serverSocket = new ServerSocket(9999);  while (true) {     //2.等待用户的连接     socket = serverSocket.accept();      //3.接受用户的消息     is = socket.getInputStream();     byte[] buffer = new byte[1024];     int len;     baos = new ByteArrayOutputStream();     while ((len = is.read(buffer)) != -1) {         baos.write(buffer, 0, len);     }     System.out.println(baos); }

Tomcat

服务端

  • 自定义 S
  • Tomcat服务器 S :Java后台开发

客户端

  • 自定义 C
  • 浏览器 B

1.7 UDP

发送端

 public class SendDemo01 {     public static void main(String[] args) throws IOException {         //1.创建数据包Socket         DatagramSocket socket = new DatagramSocket(9998);         //2.创建数据报包         String massage = "数据报包";         DatagramPacket packet = new DatagramPacket(massage.getBytes(), 0,                 massage.getBytes().length, InetAddress.getByName("127.0.0.1"), 9999);         //3.发送数据报包         socket.send(packet);         //4.关闭资源         socket.close();     } }

接收端

 public class ReceiveDemo01 {     public static void main(String[] args) throws IOException {         //1.创建服务的端口         DatagramSocket socket = new DatagramSocket(9999);         //2.接收数据报包         byte[] buffer = new byte[1024];         DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);         socket.receive(packet);         //3.输出数据报包         System.out.println(packet.getAddress().getHostAddress());         System.out.println(new String(packet.getData(), 0, packet.getLength()));         //4.关闭资源         socket.close();     } }

1.8 URL

统一资源定位符:定位资源(本地,互联网)

DNS域名解析

 协议://ip地址:端口/项目名/资源
————————

Network programming

1.1 general

computer network

Computer network refers to a computer system that connects < strong > multiple computers and their external devices with independent functions in different < / strong > geographical locations through communication lines < / strong >, and < strong > realizes resource sharing < / strong > and information transmission under the management and coordination of network operating system, network management software and < strong > network communication protocol < / strong >.

Network programming purpose

Dissemination of information (data exchange, communication)

1.2 elements of network communication

  • IP and port number
  • Network communication protocol

1.3 IP

  • Uniquely locate a computer on a network
  • 127.0.0.1:本机localhost
  • Classification of IP addresses (IPv4 / IPv6)
  • Domain name: memory IP problem

1.4 ports

A port represents the process of a program on a computer

  • Different processes have different port numbers to distinguish software
  • Specified 0 – 65535
  • (TCP) (UDP) port numbers cannot conflict under a single protocol
  • 端口分类

    公用端口 0 – 1023

    HTTP: 80

    HTTPS: 443

    FTP: 21

    程序注册端口 1024 – 49151,分配给用户或者程序

    Tomcat: 8080

    MySQL: 3306

    Oracle: 1521

    动态、私有端口 49152 – 65535
     netstat -ano #查看所有端口 netstat -ano|findstr “端口号” #查看指定端口 tasklist|findstr “PID” #查看指定端口进程 Ctrl + Shift + Esc 快速打开任务管理器

  • 公用端口 0 – 1023

    HTTP: 80

    HTTPS: 443

    FTP: 21

  • HTTP: 80
  • HTTPS: 443
  • FTP: 21
  • Program registration ports 1024 – 49151, assigned to users or programs
    Tomcat: 8080
    MySQL: 3306
    Oracle: 1521
  • Tomcat: 8080
  • MySQL: 3306
  • Oracle: 1521
  • 动态、私有端口 49152 – 65535
     netstat -ano #查看所有端口 netstat -ano|findstr “端口号” #查看指定端口 tasklist|findstr “PID” #查看指定端口进程 Ctrl + Shift + Esc 快速打开任务管理器
 netstat -ano #查看所有端口 netstat -ano|findstr "端口号" #查看指定端口 tasklist|findstr "PID" #查看指定端口进程 Ctrl + Shift + Esc 快速打开任务管理器

1.5 communication protocol

TCP / IP protocol group: actually a group of protocols

TCP: call

  • Connection, stable
  • Three handshakes and four waves
    A: what are you looking at? B: what are you looking at? A: I have to go. B: are you really going? B: are you really going? A: I really want to go
 A:你瞅啥 B:瞅你咋地 A:干一场  A:我要走了 B:你真的要走了吗 B:你真的真的要走了吗 A:我真的要走了

UDP: send SMS

  • Not connected, unstable

1.6 TCP

client

  • 连接服务器Socket
  • send message
 //1.连接服务器 //获取服务端IP和端口号 InetAddress serverIP = InetAddress.getByName("localhost"); int port = 9999; //创建一个Socket连接 socket = new Socket(serverIP, port);  //2.发送消息 os = socket.getOutputStream(); os.write("客服端向服务端发送消息".getBytes());

Server

  • Establish the port of the service
  • Waiting for the user to connect
  • Accept user messages
  //1.创建服务的端口 serverSocket = new ServerSocket(9999);  while (true) {     //2.等待用户的连接     socket = serverSocket.accept();      //3.接受用户的消息     is = socket.getInputStream();     byte[] buffer = new byte[1024];     int len;     baos = new ByteArrayOutputStream();     while ((len = is.read(buffer)) != -1) {         baos.write(buffer, 0, len);     }     System.out.println(baos); }

Tomcat

Server

  • Custom s
  • Tomcat服务器 S :Java后台开发

client

  • Custom C
  • Browser B

1.7 UDP

Sender

 public class SendDemo01 {     public static void main(String[] args) throws IOException {         //1.创建数据包Socket         DatagramSocket socket = new DatagramSocket(9998);         //2.创建数据报包         String massage = "数据报包";         DatagramPacket packet = new DatagramPacket(massage.getBytes(), 0,                 massage.getBytes().length, InetAddress.getByName("127.0.0.1"), 9999);         //3.发送数据报包         socket.send(packet);         //4.关闭资源         socket.close();     } }

receiving end

 public class ReceiveDemo01 {     public static void main(String[] args) throws IOException {         //1.创建服务的端口         DatagramSocket socket = new DatagramSocket(9999);         //2.接收数据报包         byte[] buffer = new byte[1024];         DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);         socket.receive(packet);         //3.输出数据报包         System.out.println(packet.getAddress().getHostAddress());         System.out.println(new String(packet.getData(), 0, packet.getLength()));         //4.关闭资源         socket.close();     } }

1.8 URL

Uniform resource locator: locate resources (local, Internet)

DNS domain name resolution

 协议://ip地址:端口/项目名/资源