Solicitud de red (4) - Socket

C/SEstructura: estructura cliente/servidor, que es una arquitectura de sistema de software; aprovecha al máximo las ventajas del entorno de hardware en ambos extremos y asigna tareas razonablemente al Clientfinal Serverpara lograr, reduciendo la sobrecarga de comunicación del sistema.

SocketSocket es una TCP/IPinterfaz de llamada de programación que encapsula el protocolo, que pertenece a la capa de transporte, es decir, a través del desarrollo del protocolo Socketen Androidla plataforma TCP/IP, proporciona un canal para la transmisión de datos entre las dos partes.

Enchufe

SocketEl uso puede basarse en TCPun UDPprotocolo.

TCPEl Protocolo ( Transmission Control Protocol), es decir, el Protocolo de control de transmisión, es un protocolo de comunicación de la capa de transporte. Basado en TCPel protocolo de la capa de aplicación de FTP, Telnet, SMTP, HTTPy POP3. DNScaracterística es:

  • Orientado a la conexión: se refiere al uso de TCPdatos de transmisión, TCPla conexión debe establecerse primero y la conexión se libera después de que se completa la transmisión;
  • Comunicación full-duplex: una vez TCPestablecida la conexión, ambas partes pueden enviar datos en cualquier momento;
  • Confiable: se refiere a TCPlos datos transmitidos a través de la conexión, sin error, sin pérdida, sin duplicación, y llegan en orden;
  • Orientado a flujo de bytes: un flujo es una secuencia de caracteres que entran y salen de un proceso. En pocas palabras, aunque a veces el flujo de datos transmitido es demasiado grande, TCPla longitud del mensaje es limitada y no se puede transmitir de una sola vez. Debe dividirse en varios bloques de datos, pero se debe garantizar la confiabilidad y la el receptor puede recibir datos para que los fragmentos se vuelvan a ensamblar en el flujo de datos anterior;

UDPEl Protocolo ( User Datagram Protocol), el Protocolo de datagramas de usuario, es un protocolo de comunicación de la capa de transporte. Según UDPel protocolo de la capa de aplicación son TFTP, SNMPy DNS. característica es:

  • Sin conexión: UDPno se requiere conexión para transmitir datos;
  • No confiable: debido a que UDPel paquete de datos se envía, independientemente de si llegará o no, puede ocurrir una pérdida de paquetes;
  • Orientado a paquetes: los paquetes de datos son equivalentes a un paquete de datos. No importa UDPqué tan grande sea el paquete de datos entregado por la capa de aplicación, UDPaún se enviará y no se TCPdividirá así;
  • Sin control de bloqueo: El bloqueo se refiere al hecho de que la cantidad de paquetes en una determinada parte de la subred de comunicación es demasiado grande, lo que hace que sea demasiado tarde para procesar, por lo que se reduce el rendimiento de esta parte o incluso de toda la red. TCPSi se encuentra una situación similar después de establecer la conexión, los datos enviados no pueden llegar al destino y continuarán repitiéndose, lo que hará que la red se congestione cada vez más, por lo que se necesita un principio complejo para controlar la congestión. sin UDPeste problema;

UDPEscenarios de aplicaciones: muchas aplicaciones en tiempo real, como IPla telefonía y las videoconferencias en tiempo real, requieren que el host de origen envíe datos a una velocidad muy rápida y permiten que se pierdan algunos datos cuando la red está bloqueada, pero no es necesario. tener demasiado retraso En este momento, se puede considerar UDP.

AndroidHay dos métodos de comunicación entre el cliente y el servidor: HTTPy Socket:

  • HttpPerteneciente a la capa de aplicación, los datos se envían en forma de solicitud-respuesta, es decir, después de que se establece la conexión de red, el servidor envía datos al cliente después de que el cliente envía una solicitud al servidor;
  • SocketPertenece a la capa de transporte y adopta el método de enviar datos de forma activa, es decir, después de que se establece la conexión de red, el servidor puede enviar mensajes de forma activa al cliente sin que el cliente envíe una solicitud al servidor;

SocketHay dos tipos principales de uso:

  • Stream socket ( streamsocket): según TCPel protocolo, proporciona un servicio de flujo de bytes confiable en forma de flujo;
  • Toma de datagramas ( datagramsocket): Basado en UDPel protocolo, utiliza datagramas para proporcionar servicios de empaquetado y envío de datos;

Basado TCPen protocolo Socket: el cliente crea un objeto, especifica la dirección y el número de puerto Socketdel servidor y lee los datos enviados por el servidor:IPInputStream

try {
    
    
    Socket socket = new Socket("172.16.10.108", 8080);
    InputStream inputStream = new FileInputStream("e://a.txt");
    OutputStream outputStream = socket.getOutputStream();
    byte buffer[] = new byte[4 * 1024];
    int temp = 0;
    while ((temp = inputStream.read(buffer)) != -1) {
    
    
      outputStream.write(buffer, 0, temp);
    }
    outputStream.flush();
} catch (IOException e) {
    
    
  	e.printStackTrace();
}

Basado UDPen protocolo Socket: el cliente crea un DatagramSocketobjeto y especifica la interfaz para escuchar:

// 客户端发送数据
try {
    
    
    DatagramSocket socket = new DatagramSocket(1985);
    InetAddress inetAddress = InetAddress.getByName("192.168.1.32");
    String string = "哈哈哈哈哈哈";
    byte[] data = string.getBytes();
    DatagramPacket packet = new DatagramPacket(data, data.length, inetAddress, 10025);
    socket.send(packet);
} catch (IOException e) {
    
    
  	e.printStackTrace();
}

// 客户端接收数据
try {
    
    
    DatagramSocket socket = new DatagramSocket(1985);
    byte[] data = new byte[4 * 1024];
    DatagramPacket packet = new DatagramPacket(data, data.length);
    socket.receive(packet);
    String result = new String(packet.getData(), packet.getOffset(), packet.getLength());
    socket.close();
} catch (IOException e) {
    
    
  	e.printStackTrace();
}

referencia

@Android: esta es una estrategia de uso de socket muy detallada
basada en la comunicación de Android Socket
Esencial de Android: comprensión de la programación de socket y disposición de aprendizaje

Supongo que te gusta

Origin blog.csdn.net/xingyu19911016/article/details/124536636
Recomendado
Clasificación