[Java] Programación de sockets programación de red

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 ()); 
    } 
}

 

Supongo que te gusta

Origin www.cnblogs.com/mindzone/p/12755692.html
Recomendado
Clasificación