Red de conocimiento informático - Problemas con los teléfonos móviles - Explicación del código fuente de Vb

Explicación del código fuente de Vb

Este es el lado del servidor de una sala de chat, con las funciones de iniciar sesión, recibir información del cliente, reenviar y transmitir.

Privado MaxChan As Integer 'No es necesario explicar esto, ¿verdad?

Private Sub cmdexit_Click()'Este proceso es cuando se presiona el botón cmdexit el programa finaliza.

Fin

Conector final

Subform_Load() privado

Marcar I como un número entero

MaxChan = 15 'Asigna un valor a MaxChan.

Para i = 1 a MaxChan-1 'Period

Load sckServer(i)' carga los elementos en la matriz de control winsock.

A continuación

Scklisten. localport = 1001 'Establece el puerto local llamado scklisten en 1001.

Comienza a escuchar en el puerto.

Conector final

Private Sub sckBusy_Close()'Este proceso se ejecuta cuando finaliza el control winsock de sckBusy y el resultado se cierra.

sckOcupado. Cerrar

Conector final

subskbusy privado _ llegada de datos (byval bytestotal mientras) 'Este proceso es el proceso cuando el winsock de sckbusy recibe los datos enviados por el cliente, la siguiente oración significa enviando la frase "El servidor está ocupado, ¡conéctese más tarde!"

SckBusy. SendData "El servidor está ocupado, ¡conéctese más tarde!"

Actividades múltiples

Conector final

sub sck privado escucha _ solicitud de conexión (el ID de solicitud byval es largo) ' sckescucha el proceso de solicitud de conexión de este control.

Marcar I como un número entero

Determinar qué Winsock aceptará la solicitud.

For i = 0 to MaxChan-1 'Recorre los elementos en todas las matrices de control winsock.

si sckServer(i). Estado = 0 Entonces cuando los elementos de la matriz de control no están conectados.

Exit For sale del bucle.

Terminará si...

Siguiente i

si sckServer(i). Estado = 0 Entonces 'Si este winsock no está conectado.

SckServer(i). Aceptar requestID 'Acepto la conexión del cliente.

Conector de salida

Finalizará si la solicitud no recibió respuesta.

Para evitar errores, desconecte el control sckbusy una vez.

Sckbocupado. "acceptrequestid" le dice a sckbbusy que se dé la mano con el cliente para significar aceptar la solicitud de conexión del cliente.

Conector final

private Sub sckListen _ Error (el número de ByVal es un entero, la descripción es una cadena, el código de ByVal es largo, la fuente de ByVal es una cadena, el archivo de ayuda de ByVal es una cadena, el contexto de ayuda de Byval es largo , canceladodisplayas boolean)' Este proceso es el proceso de depuración de sck listening.

"Cerrar" finaliza la monitorización de scklisten.

sckEscucha. Puerto local = 1000

Los dos pasos anteriores son para restablecer scklisten y dejar que comience a escuchar nuevamente.

Conector final

subskserver privado _ close(index as integer)' Este proceso se realiza cuando el control en la matriz de control winsock está cerrado.

SckServer(índice). "Cerrar" cierra esta conexión.

Conector final

subskserver privado _ llegada de datos (el índice es un número entero, byval bytestotal es largo)' cuando el control en la matriz de control recibe un mensaje del cliente.

Dim s como una cadena

Dark I como un número entero

SckServer(index). GetData s 'Extraer mensajes.

Ifucase (left (trim(s), 2)) = "pt" y luego 'determina si es un susurro, punto a punto.

El "PT" en la frase anterior es un código específico escrito por el programador, es decir, si los dos primeros caracteres del mensaje son PT, es la palabra secreta.

Si el tercer carácter en medio del mensaje extraído es un número, entonces If es un número (mid (trim(s), 3, 1)).

I = Mid(Trim(s), 3, 1)' Asigname un valor con este número.

sckServer(i). Enviar canal de datos. Índices y Exponentes. "& ampRight(Trim(s), Len(Trim(s))-3) reenvía este mensaje al cliente numerado I.

Múltiples actividades

Si... Será end

Modo de transmisión "Else"

De lo contrario, es el modo de transmisión, que se reenvía a todos los clientes

For i = 0 to MaxChan-1 ' Loop

Utilice la propiedad State de winsock para enviar mensajes a todos los clientes conectados al servidor.

Si sckServer(i) Cuando el estado del cliente está conectado, State = 7 Entonces'. >

sckServer(i).SendDataChannel.index&Trim 'Reenviar mensaje

Finalizar si /p>

Siguiente I

Terminará si...

lstReceive. Agregar canal de artículo. Índices y Exponentes. "& amp "Trim(s)" guarda el mensaje recibido en el control de lista lstreceive.

Conector final

servidor Sub sck privado _ Error (el índice es un número entero, el número ByVal es un número entero , La descripción es una cadena, ByVal Scode es largo, ByVal Source es una cadena, el ayudante de Byval es una cadena, el ayudante de byval es largo, la visualización de cancelación es booleana)' controla el proceso de depuración de la matriz

SckServer (índice). "Cerrar" cierra incorrectamente el

conector final

.