Cómo implementar la comunicación entre dos hosts basada en sockets
Los sockets se introdujeron en los sistemas Unix e inicialmente se utilizaron principalmente para la comunicación local, pero pronto se aplicaron a los sistemas C/S. En base a esto, MicroSoft creó el control WinSock específicamente para la interfaz de Windows, que es totalmente compatible con Sockets. Invisibles para el usuario, los controles Winsock brindan fácil acceso a los servicios de red TCP y UDP y pueden ser utilizados por desarrolladores en Microsoft Access, Visual Basic, Visual C++ o Visual FoxPro. Al escribir una aplicación de cliente o servidor, no necesita conocer los detalles de TCP ni llamar a la API de Winsock subyacente. Puede conectarse fácilmente a una máquina remota e intercambiar datos en ambas direcciones simplemente configurando las propiedades del control y llamando a sus métodos. . El siguiente es el proceso de escritura de un programa de chat en línea utilizando el control VB5 WinSock.
1) La base y selección de los protocolos de comunicación de red
1.1 La base del TCP (Protocolo de transferencia de datos)
El protocolo de transferencia de datos permite la creación y mantenimiento de conexiones con ordenadores remotos se conectan. Cuando dos computadoras están conectadas, pueden transferir datos entre sí.
Si crea un programa cliente, debe conocer el nombre o la dirección IP de la computadora servidor (propiedad RemoteHost) y el puerto de "escucha" (propiedad RemotePort), y luego llamar al método de conexión.
Si crea una aplicación de servidor, debe configurar el puerto de escucha (propiedad LocalPort) y llamar al método Listen. El evento ConnectionRequest ocurre cuando una computadora cliente requiere una conexión. Para completar la conexión, llame al método Accept en el evento ConnectionRequest.
Una vez establecida la conexión, cualquier ordenador puede enviar y recibir datos. Para enviar datos, llame al método SendData. Cuando se reciben datos, se produce el evento DataArrival. Los datos se pueden obtener llamando al método GetData en el evento DataArrival.
1.2 Principios básicos de UDP
El Protocolo de datagramas de usuario (UDP) es un protocolo sin conexión. A diferencia del funcionamiento de TCP, la computadora no establece una conexión. Además, las aplicaciones UDP pueden ser clientes o servidores.
Para transferir datos, primero configure la propiedad LocalPort del ordenador cliente. Luego, la computadora servidor simplemente configura RemoteHost en la dirección de Internet de la computadora cliente, establece la propiedad RemotePort en el mismo puerto que la propiedad LocalPort de la computadora cliente y llama al método SendData para comenzar a enviar información. Luego, la computadora cliente usa el método GetData en el evento DataArrival para recuperar la información enviada.
1.3 Seleccionar protocolo de comunicación
Al utilizar el control WinSock, lo primero que debes considerar es qué protocolo usar. Los protocolos que se pueden utilizar son TCP y UDP. La diferencia importante entre estos dos protocolos es su estado de conexión:
El protocolo TCP es un protocolo de conexión que se puede comparar con un sistema telefónico. Los usuarios deben establecer una conexión antes de que pueda comenzar la transferencia de datos.
El protocolo UDP es un protocolo sin conexión, y la transmisión entre dos ordenadores es similar al envío de correo: la información se envía de un ordenador a otro, pero no existe una conexión explícita entre ambos. Además, la cantidad máxima de datos transferidos en una sola transferencia depende de la red específica.
La elección del protocolo muchas veces depende de la aplicación que necesites crear. Las siguientes preguntas le ayudarán a elegir el protocolo correcto:
1. ¿Necesita la aplicación obtener confirmación del cliente o servidor al enviar o recibir datos? Si es necesario, utilice el protocolo TCP para establecer una conexión clara antes de enviar o recibir datos.
2. ¿La cantidad de datos es particularmente grande (como imágenes y archivos de sonido)? Una vez que se establece una conexión, el protocolo TCP mantiene la conexión y garantiza la integridad de los datos. Sin embargo, este tipo de conexiones requieren más recursos informáticos y, por tanto, "cuestan" más.
3. ¿Los datos se envían de forma intermitente o dentro de una sesión? Por ejemplo, si una aplicación necesita notificar a la computadora cuando se completa una tarea, el protocolo UDP es más adecuado para enviar pequeñas cantidades de datos.
La selección del protocolo de comunicación se logra configurando el atributo de protocolo de WinSock. A continuación, elegiremos el protocolo TCP para escribir un programa de chat en línea. Antes de eso, debemos conocer un parámetro extremadamente importante: la dirección IP o el nombre de la computadora del servidor.
II) Determine el nombre de la computadora
1. En el escritorio de la computadora, haga clic derecho en "Entorno de red".
2. Seleccione atributos.
3. Haga clic en la pestaña Identidad.
4. Puede encontrar el nombre de la computadora en el cuadro "Nombre de la computadora".
Determine la dirección IP de su computadora
1. Haga clic en Inicio en la barra de tareas.
2. Seleccione Ejecutar.
3. Introduzca "winipcfg" en el campo "Abrir" para Win95, o "Abrir" para Winnt. Si el sistema operativo del servidor es winnt, ingrese "ipconfig" en el campo "Abrir".
4. Pulse Aceptar.
El nombre de la computadora o la dirección IP anterior se pueden usar como valor de la propiedad RemoteHost de WinSock.
iii) La propiedad de estado del control WinSock.
El atributo de estado se establece en los siguientes valores: Constante
Valor Descripción
sckclosed 0 Predeterminado. Cerrado
sckopen 1 Abierto
scklistening 2 Escuchando
sckconnectionpending 3 Conexión pendiente
sckresolvinghost 4 Host identificado
p>sckhostresolved 5 hosts reconocidos