Red de conocimientos turísticos - Conocimientos sobre calendario chino - ¿Cómo se implementa la herramienta de chat instantáneo en Internet?

¿Cómo se implementa la herramienta de chat instantáneo en Internet?

De la siguiente manera:

El software adopta el método P2P. Cada cliente envía mensajes directamente al chat y el servidor solo desempeña el papel de coordinador (P2P híbrido).

1. Diseño del proceso de sesión

Cuando un nuevo usuario inicia sesión en el sistema a través de su propio cliente, se obtiene del servidor una lista de la información de los usuarios actualmente en línea. La información de la lista incluye cada uno. usuario en el sistema. Los usuarios pueden comenzar a trabajar de forma independiente y enviar mensajes a otros usuarios de forma independiente sin pasar por el servidor. Cada vez que un nuevo usuario se une o un usuario en línea sale, el servidor enviará rápidamente un mensaje para notificar a todos los demás usuarios del sistema para que puedan actualizar la lista de información del usuario en tiempo real.

De acuerdo con las ideas anteriores, el flujo de sesión del sistema está diseñado de la siguiente manera:

(1) El usuario ingresa al sistema a través del cliente, envía un mensaje al servidor y solicita para iniciar sesión.

(2) Después de recibir la solicitud, el servidor devuelve un mensaje de respuesta al cliente, indicando que acepta que el usuario se una y, de paso, le dice al usuario el número de puerto de escucha donde está su hilo de servicio. situado.

(3) El cliente establece una conexión estable con el servidor de acuerdo con el número de puerto proporcionado en la respuesta del servidor.

(4) El servidor pasa la información de la lista de usuarios actualmente en línea al cliente recién agregado a través de esta conexión.

(5) Una vez que el cliente obtiene la lista de usuarios en línea, puede comunicarse de forma independiente con otros usuarios en línea.

(6) Cuando el usuario sale del sistema, se debe notificar al servidor de inmediato.

2. Gestión de usuarios

En el sistema, tanto el servidor como el cliente guardan una lista de usuarios en línea. La lista de usuarios del cliente se obtiene del servidor al iniciar sesión al principio. . Durante la ejecución del programa, el servidor es responsable de notificar a cada usuario miembro en línea en tiempo real sobre los cambios en los usuarios del sistema.

Cuando un nuevo usuario inicia sesión, el servidor le pasa la tabla de usuarios y transmite un mensaje de "iniciar sesión" a cada miembro del sistema. Cada miembro actualiza su tabla de usuarios después de recibirla.

De manera similar, cuando un usuario cierra sesión en el sistema, el servidor transmitirá rápidamente este mensaje a cada usuario. Por supuesto, esto también requiere que cada usuario informe al servidor antes de cerrar sesión.

3. Diseño del protocolo

3.1 Sesión de cliente y servidor

(1) Proceso de inicio de sesión.

El cliente utiliza UDP anónimo para enviar un mensaje al servidor:

inicio de sesión, nombre de usuario, localIPEndPoint

El contenido del mensaje incluye 3 campos, cada campo está separado por "," Separación: "iniciar sesión" significa solicitar inicio de sesión; "nombre de usuario" es el nombre de usuario "localIPEndPoint" es la dirección local del cliente.

Después de recibirlo, el servidor devuelve el siguiente mensaje en UDP anónimo:

Aceptar, puerto

Entre ellos, "Aceptar" significa que el servidor aceptó el solicitud; "puerto" es el puerto donde se encuentra el servicio. El hilo del servicio escucha posibles conexiones de clientes en este puerto.

Conéctese al servidor y obtenga la lista de usuarios:

El cliente determina el puerto de servicio a partir del valor del campo "puerto" en la sesión anterior, luego inicia una conexión TCP para el puerto y solicita al servidor información en línea de la lista de usuarios, el servidor transmitirá la lista de usuarios al cliente después de aceptar la conexión.

El formato de la lista de usuarios es el siguiente:

nombre de usuario1, IPEndPoint1; nombre de usuario2, IPEndPoint2 ....; son Nombre de usuario, IPEndPoint1, IPEndPoint2.... son sus puntos finales correspondientes. La información de cada usuario se compone de "nombre de usuario + punto final". La información del usuario está separada por ";" y toda la lista de usuarios termina con "fin".

3.1 Coordinación del servidor y gestión de usuarios

(1) Notificación de incorporación de nuevo usuario.

Dado que cada usuario que ya existe en el sistema tiene una tabla de usuarios actual, cuando un nuevo miembro se une, el servidor no necesita transmitir repetidamente la tabla de usuarios a cada miembro del sistema, siempre y cuando el se une un nuevo miembro La información del miembro se transmite a otros usuarios del sistema y luego cada uno de ellos actualiza su propia tabla de usuarios.

El servidor transmite y envía el siguiente mensaje a los usuarios del sistema:

El campo del punto final está escrito como "remoteIPEndPoint", lo que significa que un terminal de usuario remoto ha iniciado sesión y el hilo del cliente local actualiza la lista de usuarios en consecuencia. De hecho, durante este proceso, el servidor simplemente reenvía el mensaje de "iniciar sesión" recibido.

(2) El usuario sale.

Igual que cuando se une un nuevo miembro, el servidor transmite y reenvía directamente el mensaje de salida del usuario:

cerrar sesión, nombre de usuario, remoteIPEndPoint

Entre ellos, "remoteIPEndPoint " es la dirección del punto final del terminal de usuario remoto que salió del sistema.

3.1 Chat entre terminales de usuario

Cuando los usuarios chatean, sus respectivos clientes trabajan en modo P2P, son iguales e independientes y no interactúan directamente con el servidor.

4. Implementación del sistema

4.1 Hilo de servicio

Después de que el sistema se esté ejecutando, el servidor inicia primero el hilo de servicio, simplemente haga clic en el botón "Iniciar".

El software de chat instantáneo es un software de red que puede transmitir mensajes instantáneos entre dos o más usuarios. La mayoría del software de chat instantáneo puede mostrar la lista de contactos y mostrar si el contacto está en línea. Cada palabra pronunciada por el usuario se muestra en las pantallas de ambos lados en tiempo real.