Cómo utiliza VB Winsock para la comunicación de uno a muchos
VB puede crear una matriz de control Winsock y Winsock también puede aceptar múltiples solicitudes de conexión al mismo tiempo usando un control. En lugar de cerrar la conexión, simplemente crea una nueva instancia del control (estableciendo su propiedad de índice) y luego llama al método Accept en la nueva instancia.
Proporciona un cómodo acceso a los servicios de red TCP y UDP. Puede ser utilizado por desarrolladores en Microsoft Access, Visual Basic, Visual C++ o Visual FoxPro. Para escribir aplicaciones de cliente o servidor, no es necesario conocer los detalles de TCP ni llamar a las API de Winsock de bajo nivel. Puede conectarse fácilmente a una máquina remota configurando las propiedades del control y llamando a sus métodos, y también puede intercambiar datos en ambas direcciones.
Ejemplo de código:
El siguiente código supone que hay un control Winsock en el formulario denominado sckServer y su propiedad Index está establecida en 0, por lo tanto, el control es parte del control; formación. En la sección de declaración, se declara una variable a nivel de módulo intMax. En el evento Load del formulario, intMax se establece en 0 y la propiedad LocalPort del primer control de la matriz se establece en 1001. Luego llame al método Listen del control, convirtiéndolo en un control de "escucha". Cuando llega una solicitud de conexión, el código detecta si el índice es 0 (el valor del control de "escucha"). Si es 0, el control de escucha incrementará el valor de intMax y usará ese número para crear una nueva instancia de control. Luego, use la nueva instancia de control para aceptar la solicitud de conexión
Opción explícita
Private intMax As Long
Private Sub Form_Load()
intMax = 0
sckServer(0).LocalPort = 1001
sckServer(0).Listen
End Sub
Sub privado sckServer_ConnectionRequest _
(Índice como entero, ByVal requestID como largo)
Si índice = 0 entonces
intMax = intMax + 1
Cargar sckServer (intMax)
sckServer(intMax).LocalPort = 0
sckServer(intMax).Aceptar requestID
Cargar txtData(intMax)
Finalizar si
Finalizar sub