Eu uso o esquema abaixo os motivos estao nos comentarios dai cada cliente recebe e analisa se é pra ele e descarta ou executa
Function CliEnviaStatus(SokIdx)
'Envia msg para o programa cliente
Dim MyMsg As New MsgComm
'Monta a mensagem
MyMsg.Cmd = MC_DATA
'Insere os dados de cada circuito
MyMsg.Param.Add DATA
MyMsg.Param.Add DATA1
MyMsg.Param.Add DATA2
MyMsg.Param.Add DATA3
MyMsg.Param.Add DATA4
'Envia para o cliente
Ret = WSokSrv1.Envia(SokIdx, MyMsg.Txt)
End Function
Private Sub tmrCliSts_Timer()
'Este timer executa a funcao CliEnviaStatus para cada soquete conectado
'Isto e' necesario porque o VB nao consegue enviar mais de uma mensagem _
TCP pelo soquete, entao elas sao espacadas de alguns milisegundos
Static Conta As Integer
Conta = Conta + 1
On Error GoTo TrataErro
If WSokSrv1.GetSocketSts(Conta) = True Then
'Envia status para este cliente
CliEnviaStatus Conta
End If
'Caso chegue ao ultimo soquete, desliga o timer
If Conta >= 10 Or _
Conta >= WSokSrv1.GetMaxSocket Then
Conta = 0
tmrCliSts.Enabled = False
End If
Exit Sub
TrataErro:
Debug.Print "Deu o problema do soquete servidor " & Conta
frmLog.LogAdd "Deu o problema do soquete servidor " & Conta
Resume Next
End Sub