1. Dos problemas principales en la programación de redes
Una es cómo localizar con precisión uno o más hosts en la red, y el otro es cómo transmitir datos de manera confiable y eficiente después de encontrar el host.
En el protocolo TCP/IP, la capa IP es el principal responsable de la ubicación del host de red y el enrutamiento de la transmisión de datos. La dirección IP puede determinar de manera única un host en Internet.
La capa TCP proporciona un mecanismo de transmisión de datos confiable (TCP) o no confiable (UDP) para la aplicación, que es el objeto principal de la programación de red, y generalmente no necesita preocuparse por cómo la capa IP procesa los datos.
El modelo de programación de red más popular en la actualidad es la estructura del cliente/servidor (C/S). Es decir, una de las partes de comunicación actúa como un servidor para esperar a que el cliente envíe una solicitud y responda. El cliente se aplica al servidor cuando se necesita el servicio. El servidor generalmente siempre se ejecuta como demonio, escuchando el puerto de red. Una vez que un cliente lo solicite, comenzará un proceso de servicio para responder al cliente, y al mismo tiempo continuará escuchando el puerto de servicio en sí para que los clientes posteriores también puedan obtener el servicio de manera oportuna.
2. Dos tipos de protocolos de transmisión: TCP/UDP
TCP es la abreviatura del protocolo de control de transferencia, un protocolo orientado a la conexión que garantiza una transmisión confiable. La transmisión a través del protocolo TCP da como resultado un orden de flujos de datos sin errores. Se debe establecer una conexión entre los dos pares de enchufes del remitente y el receptor para comunicarse sobre la base del protocolo TCP. Cuando un socket (generalmente un socket de servidor) está esperando para establecer una conexión, el otro socket puede requerir una conexión. Una vez que estos dos enchufes están conectados, pueden realizar la transmisión de datos bidireccional, y ambas partes pueden realizar operaciones de envío o recepción.
UDP es la abreviatura del protocolo de datagrama de usuario. Es un protocolo sin conexión. Cada datagrama es una información independiente, incluida una fuente completa o dirección de destino. Se transmite al destino en la red por cualquier posible ruta. Por lo tanto, si puede llegar al destino, el momento de llegar al destino y la corrección del contenido no puede garantizarse.
Comparar:
UDP:
1. Cada datagrama proporciona información completa de la dirección, por lo que no es necesario establecer una conexión entre el remitente y el receptor.
2. Hay un límite de tamaño cuando DP transmite datos, y cada datagrama transmitido debe limitarse a 64 KB.
3. DP es un protocolo poco confiable, y los datagramas enviados por el remitente no necesariamente llegan al receptor en el mismo orden.
TCP:
1. Para conectarse al protocolo de conexión, se debe establecer una conexión antes de la transmisión de datos entre los sockets, por lo que se requiere tiempo de conexión en TCP.
2. Límite de tamaño de datos de transmisión CP. Una vez que se establece la conexión, los enchufes de ambas partes pueden transmitir datos grandes en un formato unificado.
3.CP es un protocolo confiable que garantiza que el receptor obtenga completamente correctamente todos los datos enviados por el remitente.
solicitud:
1. TCP tiene una vitalidad extremadamente fuerte en la comunicación de red. Por ejemplo, la conexión remota (Telnet) y la transferencia de archivos (FTP) requieren que los datos de longitudes variables se transmitan de manera confiable. Sin embargo, la transmisión confiable tiene un costo. La verificación de la corrección del contenido de datos inevitablemente ocupará el tiempo de procesamiento de la computadora y el ancho de banda de la red. Por lo tanto, la eficiencia de la transmisión TCP no es tan alta como la de UDP.
2. UDP es simple de operar y requiere solo menos supervisión, por lo que generalmente se usa en aplicaciones de clientes/servidores en sistemas distribuidos con alta confiabilidad en LAN. Por ejemplo, el sistema de videoconferencia no requiere la corrección absoluta de los datos de audio y video, siempre que la consistencia esté garantizada, obviamente es más razonable usar UDP en este caso.
3. Programación de red Java basada en sockets
1. ¿Es un socket?
Dos programas en la red realizan el intercambio de datos a través de una conexión de comunicación bidireccional. Un extremo de este enlace bidireccional se llama enchufe. Socket generalmente se usa para conectarse entre clientes y proveedores de servicios. Socket es una interfaz de programación muy popular del protocolo TCP/IP. Un socket está determinado de manera única mediante una dirección IP y un número de puerto.
Sin embargo, los tipos de protocolos compatibles con el socket no solo son TCP/IP, por lo que no existe una conexión necesaria entre los dos. En el entorno Java, la programación de socket se refiere principalmente a la programación de red basada en el protocolo TCP/IP.
2. El proceso de comunicación de OCKE
El lado del servidor escucha (escucha) si hay una solicitud de conexión en un puerto determinado. El lado del cliente emite una solicitud de conexión al lado del servidor, y el lado del servidor envía un mensaje de aceptación al lado del cliente. Se establece una conexión. Tanto el servidor como el lado del cliente pueden comunicarse entre sí a través de envío, escritura y otros métodos.
Para un socket completamente funcional, debe incluir la siguiente estructura básica, y su proceso de trabajo incluye los siguientes cuatro pasos básicos:
(1) crear socket;
(2) Abra la entrada/flujo de salida conectado al enchufe;
(3) leer/escribir el socket de acuerdo con un cierto protocolo;
(4) Cerrar el enchufe.
3. Construir el enchufe
Crear enchufes
Java proporciona dos clases Socket y Serversocket en el paquete java.net, que se utilizan para representar al cliente y al servidor para una conexión bidireccional. Estas son dos clases muy bien llenas y son muy fáciles de usar. El método de construcción es el siguiente:
Socket (dirección ineTaddress, puerto int);
Socket (dirección inetaddress, int puerto, transmisión booleana);
Socket (host de cadena, int prot);
Socket (host de cadena, int prot, transmisión booleana);
Socket (SocketiMpl impl)
Socket (String Host, Int Port, Inetaddress LocalAddr, int localport)
Socket (dirección inetaddress, int Port, inetaddress localaddr, int localport)
ServerSocket (int Port);
ServerSocket (int Port, int Backlog);
ServerSocket (int Port, int Backlog, inetAddress bindAddr)
La dirección, el host y el puerto son la dirección IP, el nombre del host y el número de puerto de la otra parte en la conexión bidireccional respectivamente. La transmisión indica si el socket es un socket de transmisión o un socket de datagrama. Localport indica el número de puerto del host local. LocalAdDR y BindAdDR son la dirección de la máquina local (la dirección de host del SerververSocket). Impl es la clase principal del socket. Se puede usar para crear Serversocket y crear enchufes. El recuento representa el número máximo de conexiones que el servidor puede admitir. Por ejemplo:
Socket Client = new Socket ("127.0.0.1", 8888);
Serversocket Server = nuevo Serversocket (8888);
Tenga en cuenta que debe tener cuidado al seleccionar un puerto. Cada puerto proporciona un servicio específico. Solo dando el puerto correcto se puede obtener el servicio correspondiente. Los números de puerto de 0 ~ 1023 están reservados por el sistema. Por ejemplo, el número de puerto del servicio HTTP es 80, el número de puerto del servicio Telnet es 21 y el número de puerto del servicio FTP es 23. Por lo tanto, cuando seleccionamos el número de puerto, es mejor elegir un número mayor que 1023 para evitar conflictos.
Si se produce un error al crear un socket, se generará una IOException y debe procesarse en el programa. Entonces, al crear un socket o ServerSocket, es necesario atrapar o lanzar una excepción.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.