VB6 ERRO NO WINSOCK

LUISLPC 02/06/2012 15:49:29
#403384
Boa tarde amigos...

Estou utilizando o codigo postado pelo TECLA no link abaixo:

www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=332809

este aqui>:

  Option Explicit
Public NumSockets As Integer
[ô]//Public Variable to track number of Connections

Private Sub Form_Load()
Caption = Winsock1(0).LocalHostName & _
Winsock1(0).LocalIP
Winsock1(0).LocalPort = 1066
Print [Ô]Listening to [Ô] + Str(Winsock1(0).LocalPort)
Winsock1(0).Listen
End Sub

Private Sub Winsock1_Close(Index As Integer)
Print [Ô]Connection Closed :[Ô] & _
Winsock1(Index).RemoteHostIP
Winsock1(Index).Close
End Sub

Private Sub Winsock1_ConnectionRequest(Index As Integer, _
ByVal requestID As Long)
Print [Ô]Connection Request from : [Ô] & _
Winsock1(Index).RemoteHostIP
NumSockets = NumSockets + 1
[ô]//Increase Number of Sockets by one.
Load Winsock1(NumSockets)
[ô]//Load a New Winsock Object Nusockets as Index Value
Winsock1(NumSockets).Accept requestID
[ô]//Accept the New Connection
End Sub

Private Sub Winsock1_DataArrival(Index As Integer, ByVal _
bytesTotal As Long)
Dim vtData As String
Winsock1(Index).GetData vtData, vbString
Print vtData
End Sub


funciona perfeitamente....o que eu adicionei nele apenas o foi isso aqui:

  Winsock1(Index).GetData comando, vbString

Select Case comando
Case [Ô]ligar1[Ô]
Call principal.funcontrole1on
Winsock1(Index).SendData [Ô]ligar1 ok[Ô]
Case [Ô]ligar2[Ô]
Call principal.funcontrole2on
Winsock1(1).SendData [Ô]ligar2 ok[Ô]
Case [Ô]ligar3[Ô]
Call principal.funcontrole3on
Winsock1(1).SendData [Ô]ligar3 ok[Ô]
Case [Ô]ligar4[Ô]
Call principal.funcontrole4on
Winsock1(1).SendData [Ô]ligar4 ok[Ô]
Case [Ô]ligar5[Ô]
Call principal.funcontrole5on
Winsock1(1).SendData [Ô]ligar5 ok[Ô]
Case [Ô]ligar6[Ô]
Call principal.funcontrole6on
Winsock1(1).SendData [Ô]ligar6 ok[Ô]
Case [Ô]ligar7[Ô]
Call principal.funcontrole7on
Winsock1(1).SendData [Ô]ligar7 ok[Ô]
Case [Ô]ligar8[Ô]
Call principal.funcontrole8on
Winsock1(1).SendData [Ô]ligar8 ok[Ô]

Case [Ô]desligar1[Ô]
Call principal.funcontrole1off
Winsock1(1).SendData [Ô]desligar1 ok[Ô]

Case [Ô]desligar2[Ô]
Call principal.funcontrole2off
Winsock1(1).SendData [Ô]desligar2 ok[Ô]

Case [Ô]desligar3[Ô]
Call principal.funcontrole3off
Winsock1(1).SendData [Ô]desligar3 ok[Ô]


as vezes funciona perfeitamente....mas de vez em quando ocorre um erro: [txt-color=#e80000]run time erro 40006
Wrong protocol or connection state for the requested transaction or request[/txt-color], quando o vb tenta retornar algo ---- Winsock1(1).SendData [Ô]desligar3 ok ----- apos receber (recebe ok) ....queria ver se alguem tem ideia do que pode estar ocorrendo....percebi que se eu tentar um tempinho depois funciona....tipo se repetir a solicitacao funciona perfeito...como se a porta estivesse ocupada no momento...

alguem tem alguma ideia?

obrigado!
LUISLPC 03/06/2012 12:15:37
#403397
boa tarde amigos

resolvi utilizar o winsock de modo simples, o que o servidor faz eh fechar a conexao atual (sem multiplas conexoes) e abrir ela novamente...nao deu mais o erro...porem o que ocorre eh o seguinte.... no cliente, conexo a primeira vez blz...no server o estado esta como conectado, troco informacoes perfeitamente...

fecho a conexao no cliente, o server fecha e volta a ficar [Ô]Escutando...[Ô] - e o cliente fica como [Ô]Fechada[Ô], se ja mando conectar novamente em seguida da erro 9.....se espero uns 30, 40 segundos conecta normal....parece q há uma demora em liberar a porta no cliente, apesar do estado dela estar como fechada....alguem tem ideia do q daria pra fazer para liberar na hora?

obrigado!
Tópico encerrado , respostas não são mais permitidas