C/S
Estructura: 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 Client
final Server
para lograr, reduciendo la sobrecarga de comunicación del sistema.
Socket
Socket es una TCP/IP
interfaz 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 Socket
en Android
la plataforma TCP/IP
, proporciona un canal para la transmisión de datos entre las dos partes.
Socket
El uso puede basarse en TCP
un UDP
protocolo.
TCP
El 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 TCP
el protocolo de la capa de aplicación de FTP
, Telnet
, SMTP
, HTTP
y POP3
. DNS
característica es:
- Orientado a la conexión: se refiere al uso de
TCP
datos de transmisión,TCP
la 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
TCP
establecida la conexión, ambas partes pueden enviar datos en cualquier momento; - Confiable: se refiere a
TCP
los 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,
TCP
la 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;
UDP
El Protocolo ( User Datagram Protocol
), el Protocolo de datagramas de usuario, es un protocolo de comunicación de la capa de transporte. Según UDP
el protocolo de la capa de aplicación son TFTP
, SNMP
y DNS
. característica es:
- Sin conexión:
UDP
no se requiere conexión para transmitir datos; - No confiable: debido a que
UDP
el 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
UDP
qué tan grande sea el paquete de datos entregado por la capa de aplicación,UDP
aún se enviará y no seTCP
dividirá 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.
TCP
Si 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. sinUDP
este problema;
UDP
Escenarios de aplicaciones: muchas aplicaciones en tiempo real, como IP
la 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
.
Android
Hay dos métodos de comunicación entre el cliente y el servidor: HTTP
y Socket
:
Http
Perteneciente 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;Socket
Pertenece 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;
Socket
Hay dos tipos principales de uso:
- Stream socket (
streamsocket
): segúnTCP
el protocolo, proporciona un servicio de flujo de bytes confiable en forma de flujo; - Toma de datagramas (
datagramsocket
): Basado enUDP
el protocolo, utiliza datagramas para proporcionar servicios de empaquetado y envío de datos;
Basado TCP
en protocolo Socket
: el cliente crea un objeto, especifica la dirección y el número de puerto Socket
del servidor y lee los datos enviados por el servidor:IP
InputStream
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 UDP
en protocolo Socket
: el cliente crea un DatagramSocket
objeto 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