¿Cómo permitir que el cliente hable con el cliente en vb winsock? Por favor, dé alguna explicación.
Diseño e implementación de software cliente-servidor de desarrollo VB
Fuente: "China Computer News": Autor: Anónimo De:: Qiaoqiao Lectura 2006-07-10 Ingrese al grupo de discusión
Palabras clave: acceso c css foxpro ftp
1 Introducción
Con el aumento y el rápido desarrollo de las comunicaciones en red, el protocolo TCP/IP se ha convertido en el estándar en las redes informáticas. El protocolo de transmisión más importante, el protocolo de transmisión TCP/IP, también se está volviendo cada vez más familiar para la gente. La Internet actual se basa en el protocolo TCP/IP, además de en WAN, también se utiliza ampliamente en redes de área local (LAN).
TCP es un protocolo de control de transmisión que proporciona un servicio de flujo de datos confiable y orientado a la conexión de sesiones a través de redes físicas no confiables donde los paquetes de datos pueden perderse, dañarse, repetirse, retrasarse e interrumpirse. -Procesar el mecanismo de comunicación a través de confirmación, control de flujo, sincronización de multiplexación y otras tecnologías de corrección automática de errores, garantizando así plenamente la confiabilidad y el orden de la transmisión de datos del usuario. Protocolo TCP. Cuando se comunica utilizando el protocolo TCP, TCP establece y controla la relación de sesión entre el remitente de datos y el receptor. Cuando el receptor recibe los datos correctamente, debe enviar un mensaje de confirmación al remitente. Si el remitente no recibe un acuse de recibo dentro del tiempo especificado, el paquete será retransmitido.
IP se refiere al Protocolo de conmutación de paquetes, que son las reglas que definen el enrutamiento de paquetes entre hosts en una red. Su tarea básica es transmitir datagramas a través de la red, con datagramas IP individuales independientes entre sí. La IP en sí no tiene protocolo de conexión y no establece una relación de sesión hasta que se intercambian datos. IP tampoco acusa recibo de datos y ni el remitente ni el receptor pueden detectar si los datos se transmitieron correctamente. Por tanto, la propiedad intelectual en sí misma no es fiable y no puede garantizar la correcta transmisión de datos.
En las aplicaciones de red TCP/IP, la mayoría de las aplicaciones de red adoptan el modelo cliente/servidor, es decir, el cliente envía una solicitud de servicio al servidor, el servidor responde y el servidor generalmente escucha al cliente en una dirección conocida Cuando el cliente realiza una solicitud al servidor, el proceso de servicio permanece inactivo hasta que el programa cliente solicita una conexión. El servidor responde y proporciona los servicios correspondientes al cliente. La característica más importante del modelo cliente/servidor es la interacción no punto a punto, y el cliente y el servidor se encuentran en una posición desigual. El servidor tiene varios recursos de software y hardware y capacidades informáticas que el cliente no tiene. El servidor proporciona servicios y el cliente solicita servicios. Este modelo se adapta a la distribución desigual de los recursos de la red, las capacidades informáticas, la información, etc. el método principal de las aplicaciones IP. Muchas aplicaciones típicas de Internet, como WWW, FTP, Telnet, correo electrónico, etc., adoptan el modo cliente/servidor.
Visual Basic es un sistema de desarrollo de lenguajes de programación visual sencillo, fácil de aprender y eficiente en el entorno Windows. Con su estilo de diseño de interfaz visual WYSIWYG y programación orientada a objetos de 32 bits, se usa ampliamente en diversos campos y es una herramienta de desarrollo utilizada por muchos desarrolladores de software. VB no solo tiene buenas capacidades de diseño de interfaz, sino que también tiene poderosas funciones de comunicación de red. VB no solo tiene buenas capacidades de diseño de interfaz, sino que también tiene poderosas funciones de comunicación de red. Es muy conveniente utilizar VB para desarrollar software de aplicación de comunicación de red, especialmente el diseño de la interfaz del software es muy conveniente, la carga de trabajo de programación es pequeña y el ciclo de desarrollo es corto.
Visual Basic 6.0 proporciona el control Winsock para admitir la comunicación entre dos o más computadoras en la red y proporciona varias propiedades y métodos para la comunicación en red. Puede lograr una comunicación de red TCP o UDP configurando las propiedades de un control Winsock y llamando a sus métodos.
Por lo tanto, el proceso de escribir un programa de comunicación de red utilizando el control Winsock es en realidad el proceso de configurar las propiedades del control Winsock y llamar a sus métodos. Usando este control, los programadores pueden escribir fácilmente programas cliente-servidor TCP/IP.
2 Control Winsock
El control Winsock es un control invisible que proporciona fácil acceso a los servicios de red TCP y UDP. Los programadores solo necesitan configurar las propiedades del control Winsock y llamarlo. métodos, puede desarrollar aplicaciones cliente/servidor sin conocer los detalles de TCP o llamar a funciones WinsockAPI de bajo nivel. Microsoft Access, Visual Baisc, Visual C o Visual FoxPro se pueden utilizar para escribir programas cliente-servidor.
Si accede a la funcionalidad del servicio Protocolo de control de transmisión TCP, debe establecer una conexión e implementar una comunicación punto a punto entre hosts. Si accede a la funcionalidad del Protocolo de datagramas UDP, no se requiere conexión y los datos enviados se transmitirán a través de Internet.
3 Método de programación cliente-servidor TCP/IP
Cuando utilice el protocolo TCP/IP para comunicarse, primero debe especificar el método de comunicación como TCP y configurar la propiedad Protocolo del Control Winsock para sckTCPProtocol. Luego, de acuerdo con las disposiciones del protocolo de comunicación TCP, se debe solicitar una conexión de red antes de que se puedan transmitir datos.
3.1 El programa del servidor comienza a monitorear la red
Hay tres controles Winsock en el formulario del programa del servidor, llamados scckServer, sckBusy y scckListen.
Entre ellos, sckListen es el control de escucha; sckBusy es el control de conexión. Los controles de escucha y conexión no pueden ser el mismo control Winsock.
El programa servidor primero debe escuchar la red y esperar la solicitud de conexión del cliente antes de poder establecer una conexión de red. Antes de que el programa del servidor comience a escuchar la red, debe configurar la interfaz de comunicación para la propiedad LocalPort del control de escucha (sckListen) y luego llamar al método de escucha. El código de programa para que el programa servidor comience a escuchar la red es el siguiente:
sckListen.LocalPort=4477 sckListen.Listen 'Escuchar la red
3.2 El programa cliente solicita una conexión
El programa del servidor se inicia Después de ejecutar y comenzar a monitorear la red, antes de que el programa cliente solicite una conexión, debe configurar el host remoto para la propiedad RemodeHost del control Winsock del cliente y configurar la interfaz de comunicación. para la propiedad RemodePort y luego llame al método Connect para solicitar una conexión desde el programa del servidor.
Establezca el nombre del host remoto, que puede ser un nombre de computadora o una dirección IP. Si es el nombre de la computadora host, el sistema necesita convertirlo a la dirección IP correspondiente; si es la dirección IP del host, conéctese directamente. Connect 'Solicitar conexión
3.3 El programa servidor responde a la solicitud de conexión
Después de que el programa servidor comienza a monitorear la red, cuando el programa cliente ejecuta el método Connect para solicitar una conexión, el control de escucha del programa del servidor (sckListen) Se activa el evento ConnectionRequest y se pasa el identificador de solicitud de conexión. Los programadores deben llamar al método Accept del control de conexión (sckServer) en el programa de eventos para implementar la conexión.
El código del programa del servidor para responder a la conexión es el siguiente:
Private Sub sckListen_ConnectionRequest(ByVal requestID As Long)
sckServer.Accept requestID 'Respuesta a la solicitud de conexión'. /p>
End Sub
Cuando el programa servidor ejecuta el método Accept para establecer una conexión, el control de conexión en el programa cliente activará el evento Connect para anunciar la finalización de la conexión. conexión, o desencadenar el evento Error para declarar que la conexión falló. Puede agregar un controlador posterior a la conexión a este procedimiento de evento.
Si el programa del servidor necesita admitir conexiones multiusuario, es necesario crear una matriz de control Winsock y generar dinámicamente un control Winsock para conectarse al programa cliente al conectarse. El código del programa debe modificarse de la siguiente manera:
Private Sub sckListen_ConnectionRequest(ByVal requestID As Long)
Dim i As Long
If CurNumberlt MaxNumber Then ' MaxNumber; es el número máximo de conexión, CurNumber es el número de conexión actual
Para i = 1 a CurNumber
Si sckServer(i).State = 0 Entonces 'Determina si hay control libre de Winsock
Salir para
Finalizar si
Siguiente i
Si i = CurNumber Entonces
CurNumber = CurNumber 1
i = CurNumber
End If
Load sckServer(i) 'Cargar dinámicamente el control Winsock
sckServer(i). Sub
3.4 Transmisión de datos
Después de que el programa del servidor y el programa del cliente estén conectados exitosamente, puede comenzar la transmisión de datos. Una vez establecida la conexión, tanto el programa servidor como el programa cliente pueden enviar o recibir datos. Cuando una de las partes quiere enviar datos, se llama al método SendData.
Dim SendStr As String
SendStr = "¡Conexión exitosa!"
Winsock1.SendData SendStr 'Enviar datos
Si una parte envía data, el control conectado a la otra parte generará un evento DataArrival y es necesario llamar al método GetData en el controlador de eventos DataArrival para recibir los datos. El tipo de datos recibido debe ser el mismo que el tipo de datos enviado para que los datos se puedan recibir correctamente. El código del programa para recibir datos es el siguiente:
Dim RecStr As String
sckClient.GetData RecStr
Imprimir RecStr
3.5 Cerrar la conexión
p>
Una vez que la aplicación completa la transferencia de datos, debe cerrar la conexión y liberar recursos del sistema. Se puede llamar al método Close cuando una de las partes cierra la conexión. El código del programa para cerrar la conexión es el siguiente:
sckClient.Close 'Cerrar Conexión
Después de que una parte realiza la operación de cerrar la conexión, el control de la otra parte generará un Cerrar evento. El programa necesita manejar este evento para completar el trabajo final de cerrar la conexión.
El código para manejar este evento es el siguiente:
Private Sub sckServer_Close()
sckServer(Index).Close 'Liberar la conexión
Descargar sckServer(Index). ) 'Eliminar el control
End Sub
4 métodos de programación utilizando el método de comunicación UDP
El protocolo de mensajes de usuario UDP es un protocolo sin conexión y funciona de manera diferente al protocolo TCP , El protocolo UDP no utiliza un mecanismo de confirmación de mensajes, no secuencia los mensajes y no realiza control de flujo. Por lo tanto, los mensajes UDP pueden perderse, duplicarse, desordenarse, etc. Sin embargo, debido a que su trabajo preliminar es menor que el de TCP. el ordenador no establece conexión, por lo que la comunicación se puede iniciar rápidamente. La comunicación UDP es un método de transmisión. Cuando un host UDP envía datos, todos los demás hosts de la red pueden recibir los datos. La comunicación UDP es más simple que TCP porque UDP no requiere una conexión, por lo que no es necesario solicitar una conexión. cerrar la conexión. El remitente ignora si el receptor realmente recibió los datos y el receptor también ignora si el remitente envió los datos. Esto hace que sea muy fácil escribir programas de red para el método de comunicación UDP.
4.1 Establecer las propiedades del control Winsock en el programa del servidor
En el programa del servidor, debe configurar la interfaz de comunicación para la propiedad LocalPort del control Winsock:
sckserver.LocalPort =4477
4.2 El programa cliente envía datos
Cuando el host UDP quiere enviar datos, el remitente ignora si el receptor realmente ha recibido los datos. El código del programa SendData es el siguiente:
Dim SendStr As String
SendStr = "¡Enviar información!"
sckClient.SendData SendStr Enviar datos'