Red de conocimiento informático - Aprendizaje de código fuente - ¿Por qué este código es incorrecto?

¿Por qué este código es incorrecto?

Volver a vincular es incorrecto porque:

Después de hacer clic en volver a vincular, si hay dos clientes, es decir, hay dos miembros en la matriz de clientes,

El bucle de recuento se establece en 2, el first El bucle n es 1

Al ejecutar el primer bucle, el servidor desconectará los clientes almacenados en la matriz de clientes [1], activando así la subrutina _Server1_CustomersLeave

Y tu La subrutina contiene operaciones para eliminar miembros de la matriz.

Y su subrutina incluye la operación de eliminar miembros de la matriz. El cliente desconectado se elimina de la matriz. En este momento, solo hay 1 miembro en la matriz. Cuando se ejecuta el segundo ciclo, n es 2. En este momento, no hay un segundo miembro en la matriz de clientes, por lo que se excede el subíndice y se informa un error.

La razón por la que no se produce ningún error después de agregar el retraso es:

De manera similar, al activar la salida de _Server1_Client se eliminará el miembro, pero debido a que usted establece el retraso, el proceso se bloqueará y en este momento, el comando de conexión se ejecutará nuevamente después de que el cliente se desconecte, lo que provocará que _Server1_Client ingrese a la subrutina. La matriz de clientes se agrega a los miembros nuevamente y hay un segundo miembro, por lo que el error de subíndice de matriz fuera de rango no ocurre, pero al hacer esto no se vuelven a conectar todos los clientes sino solo los de la matriz de clientes. El primer miembro se volvió a conectar dos veces. .

Además, respecto a tu pregunta sobre cambiar el puerto:

Tu cliente siempre se conecta al servidor a través del puerto fijo 8600. Cuando tu servidor cambia el puerto, el servidor no lo sabe. al respecto, todavía estoy conectado al puerto 8600 y definitivamente no puedo conectarme.

Gracias, dame puntos. . . . . .

Si tienes alguna pregunta, añade mi apodo. . . . .