Alô, grandes sapiências do VBWEB.
Criei um sistema que é composto por 2 aplicativos, um eu chamei de Servidor e o outro de Monitor.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
O monitor é instalado em quantas máquinas forem necessárias. No evento load ele captura as informações do equipamento, IP, MAC, Usuário, e as envia para o servidor pela porta 8000.
DADOS = Winsock(0).LocalIP & " | " & sUserID() & " | " & NomeComputador & " | " & MacAdress & " | " & Processador & " | " & Memoria & " | " & HD
' MsgBox DADOS
wskRetorno(0).LocalPort = 8001 'pode ser qualque outra
wskRetorno(0).Listen
Do
Load Winsock(1)
With Winsock(1)
.Close
.RemotePort = 8000
.RemoteHost = Text1
.Connect
End With
Loop While Conexao(DADOS) = False
Private Function Conexao(DADOS As String) As Boolean
On Error GoTo err
Conexao = False
Do While Winsock(1).State <> sckConnected
DoEvents
Loop
Winsock(1).SendData DADOS
Conexao = True
err:
Unload Winsock(1)
End Function
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
O Servidor recebe a requisição, e após ele recebe as informações pela porta 8000.
Private Sub Winsock_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Dim dadosdoservidor
On Error Resume Next
Load Winsock(1)
If Winsock(1).State <> sckClosed Then Winsock(1).Close
Winsock(1).Accept requestID
End Sub
Private Sub Winsock_DataArrival(Index As Integer, ByVal bytesTotal As Long)
On Error Resume Next
Dim Posicao As Integer
Dim dadosdoservidor As String 'variável que irá receber os dados
Dim Temp As String
Winsock(1).GetData dadosdoservidor, vbString 'dados recebe tipo string
Temp = dadosdoservidor
Retorno dadosdoservidor
SeparaDados Temp
List1.AddItem Temp
End Sub
Após ele receber os dados ele retorna um valor novamente para o monitor.
Private Function Retorno(Dados As String)
On Error GoTo err
Dim IP As String
Dim Buffer As String
IP = Trim(Mid(Dados, 1, InStr(1, Dados, "|") - 1))
Buffer = AUTORIZACAO(Dados)
Do
wskRetorno.Close
wskRetorno.Connect IP, 8001
Loop While Conexao(Buffer) = False
Exit Function
err:
End Function
Private Function Conexao(Dados As String) As Boolean
On Error GoTo err
Dim Contador As Integer
Conexao = False
While wskRetorno.State <> sckConnected And wskRetorno.State <> sckError
Contador = Contador + 1
DoEvents
Wend
wskRetorno.SendData Dados
Conexao = True
err:
End Function
1 - O Grande problema é que quando 'debugo', tudo ocorre perfeitamente, uma única vez.
Na segunda o monitor faz a requizição de conexão, o servidor recebe, o monitor envia os dados, mas o servidor não recebe os dados.
2 - Quando crio o executável, o monitor fica somente com o status conectando, mas não envia os dados.
Alguém pode me ajudar.
Valeu aí!