USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Winsock Conecta mas ñ Envia
jarf
BARRETOS
SP - BRASIL
Postada em 03/05/2006 09:17 hs            
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í!
     
Ama
Pontos: 2843
UBERLÂNDIA
MG - BRASIL
Postada em 03/05/2006 19:01 hs         
vc colocou um timer para o servidor e monitor verificarem se existe msg na fila

Problema solucionado = click no cadeado para post encerrado!!!!!!!!!
     
jarf
BARRETOS
SP - BRASIL
Postada em 04/05/2006 08:00 hs            
Valeu ama pela força. Como pode perceber estou aprendendo sobre socket ainda.
Como é que verifico se existe mensagem na fila?
     
Ama
Pontos: 2843
UBERLÂNDIA
MG - BRASIL
ENUNCIADA !
Postada em 04/05/2006 21:14 hs         
tente inserir num módulo
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
depois onde voce colocou DoEvents substitua por Sleep 200  'não faz nada enquanto conecta ou desconect ai vc checa status
da conexão e passa pro procedimento seguinte
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página