Java proporciona bibliotecas de clases relacionadas con la red, redes sin problemas y los detalles subyacentes se entregan a la JVM
Java implementa una biblioteca de red multiplataforma, nuestro desarrollo se enfrenta a un entorno de programación de red unificada
Propósito
Comunicarse directa o indirectamente y comunicarse con otros datos de la computadora a través de protocolos de red
El problema principal:
Ubique con precisión una computadora o varias computadoras en la red y ubique aplicaciones específicas en el host
Cómo transferir datos de manera confiable y eficiente después de encontrar el host
Elementos de comunicación:
IP y número de puerto
Protocolo TCP / IP
IP: es el identificador único de la computadora en la red
Dirección de bucle de retorno local; 127.0.0.1 nombre de host: LocalHost
Clasificación de la dirección IP : IPV4 IPV6
v4-4 bytes, 4 0-255 alrededor de 4.200 millones en total disponible, 3.000 millones en América del Norte, 400 millones en Asia, agotados en 2011,
v6-128-bit 16-byte 8 enteros sin signo, cada entero está representado por 4 dígitos hexadecimales, y cada número está separado por dos puntos
Clasificación por dirección : dirección pública [uso de la World Wide Web] y dirección privada [uso de la LAN]
192.168.0.0-192.168.255.255 es utilizado internamente por la organización
estático vacío socket01IP_Address () arroja UnknownHostException { // Sistema de nombres de dominio DNS // localhost / 127.0.0.1 本 机 地址 InetAddress localhost = InetAddress.getByName ("localhost" ); System.out.println (localhost); InetAddress a = InetAddress.getByName ("www.cnblogs.com" ); System.out.println (a); // www.baidu.com/14.215.177.38 // www.acfun.cn/117.21.225.193 // www.bilibili.com/119.3.70.188 // www.cnblogs.com/101.37.113.127 InetAddress localhost =InetAddress.getLocalHost (); System.out.println (localHost); Dirección de cadena = localHost.getHostAddress (); Cadena hostName = localHost.getHostName (); }
El número de puerto es el proceso (programa) que se ejecuta en la computadora
Los diferentes procesos tienen diferentes números de puerto
Definido como un entero de 16 bits 0-65535
Puertos conocidos 0-1023 Las comunicaciones de servicio predefinidas ocupan HTTP 80, FTP 21, Telnet 23
Los puertos de registro 1024-49151 se asignan a procesos o aplicaciones de usuario Tomcat8080, MySQL3306, Oracle1521
Puerto dinámico / puerto privado 49152-65535
Enchufe = número de puerto + dirección IP
TCP
-Establecer una conexión y formar un canal de transmisión,
-Confirmación de apretón de manos de tres vías, comunicación punto a punto, confiable
-Proceso de aplicación de TCP cliente y servidor
-Puede transferir grandes datos
-La transmisión se completa, se libera la conexión establecida y la eficiencia es baja.
UDP
-Embalaje de datos, sin conexión
-Tamaño límite de 64 KB por paquete
-No se confirma la respuesta, independientemente de si la otra parte está preparada y si la parte receptora la recibe
-Transmisión de transmisión
-Al final del envío, los recursos se liberan fuera de servicio, los gastos generales son pequeños y la velocidad es rápida
TCP
público de clase TCP_Test { @test // servidor público vacío Server () lanza la excepción { // crear un programa de servidor del servidor ServerSocket = nueva nueva ServerSocket (65000 ); el socket de cliente = server.accept (); // aceptación de conjuntos de clientes entrantes Conexión InputStream inputStream = client.getInputStream (); byte [] bytesBuffer = new byte [512 ]; int len; while ((len = inputStream.read (bytesBuffer))! = -1 ) { String str= nueva cadena (bytesBuffer, 0 , len); System.out.println (str); } System.out.println ( "Mensaje del servidor: se ha recibido el cliente:" + client.getInetAddress (). getHostAddress () + "Mensaje" ); // Cerrar el recurso inputStream.close (); client.close (); server.close (); } @Test // Cliente public void client () lanza Exception { // Esto es para conectarse La información de socket de la otra parte, IP + puerto Cliente de socket = nuevo Socket (InetAddress.getByName ("localhost"), 65000 ); OutputStream outputStream= client.getOutputStream (); outputStream.write ( "Mensaje enviado desde el cliente: Connect Success !!!" .getBytes ()); // Stream object release outputStream.close (); // Socket release client. close (); } }
UDP
público de clase UDP_Test { @test pública vacío send () lanza la excepción { DatagramSocket ds = nueva DatagramSocket (); java.lang.String message = "来自 发送 器 的 消息 : Hola UDP !!!" ; byte [] bytes = mensaje.getBytes (); InetAddress localHost = InetAddress.getLocalHost (); DatagramPacket dp = nuevo DatagramPacket (bytes, 0, bytes.length, localHost, 65000 ); // 发送包 ds.send (dp); ds.close (); } @Test público vacío recibir () arroja Excepción { DatagramSocket ds = new DatagramSocket (65000 ); byte [] buffer = nuevo byte [1024 ]; Paquete DatagramPacket = nuevo DatagramPacket (buffer, 0 , buffer.length); ds.receive (paquete); System.out.println ( nueva cadena (paquete.getData (), 0 , paquete.getLength ())); ds.close (); } }
URL
Localizador uniforme de recursos Localizador uniforme de recursos, que representa una dirección de recursos de la red
-Es un URI específico, la URL se puede usar para identificar un recurso, indicando cómo ubicar este recurso
-Transferir nombre de host de protocolo número de puerto nombre de archivo nombre de fragmento? Lista de parámetros
El número de puerto general es 80
#Clip name es el punto de anclaje, para ubicar una parte específica
La lista de parámetros es un par KV? K1 = v1 como este, si hay múltiples parámetros, use y conecte
public class URL_Test { public static void main (String [] args) lanza Exception { String url = "https://www.ygo-sem.cn/photo/story-430.aspx" ; URL url_link = nueva URL (url) ; System.out.println ( "nombre de protocolo:" + url_link.getProtocol ()); System.out.println ( "nombre de host:" + url_link.getHost ()); System.out.println ( "número de puerto:" + url_link.getPort ()); // -1 significa System.out.println ("ruta del archivo:" + url_link.getPath ()); System.out.println ( "Nombre de archivo:" +url_link.getFile ()); System.out.println ( "查询 名 :" + url_link.getQuery ()); } }