PROBLEMA COM PACOTE DE WINSOCK

USUARIO.EXCLUIDOS 24/08/2007 11:54:29
#232565
Olá a todos..
Eu estava aqui expandindo meus conhecimentos de VB, com a finalidade de criar um "joguinho" online. Na verdade nem é um jogo, é somente uma picturebox com um shape , sendo que cada pessoa que loga podera ter o seu shape para mover =D.

Estou com um problema, que ja tive uma vez, só que nunk consegui arruma-lo.

Esse é o código que eu uso para o Servidor:

Citação:

Private Sub Command2_Click()
Label1.Caption = "Modo Servidor"
Command3.Enabled = False
For x = 1 To 50
Load Socket(x)
Next x
Socket(0).Listen
End Sub

Private Sub Socket_Close(Index As Integer)
Deslogar (Index)
End Sub


Private Sub Socket_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Socket(Index).Close
Socket(Index).Accept requestID
DarSocket (Index)
Logar (Index)
End Sub


Private Sub Socket_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim Data As String
Dim Socket1 As Integer
Dim String1 As String
Socket(Index).GetData Data
Comands = Split(Data, vbTab)
Select Case Comands(0)
Case "Mover"
Socket1 = Val(Comands(1))
String1 = Comands(2)
Mover Socket1, String1
End Select
End Sub


Private Sub Socket_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
MsgBox "Erro na conexão"
End Sub


Private Sub Deslogar(Index As Integer)
For x = 0 To 50
If Socket(Index).State = 7 Then
Socket(Index).SendData "Deslogar" & vbTab & Index
End If
Next x
End Sub


Private Sub Logar(Index As Integer)
For x = 0 To 50
If Socket(x).State = 7 Then
Socket(x).SendData "Logar" & vbTab & Index
End If
Next x
End Sub


Private Sub Mover(Index As Integer, Coordenadas As String)
For x = 0 To 50
If Socket(x).State = 7 Then
Socket(x).SendData "Mover" & vbTab & Index & vbTab & Coordenadas
End If
Next x
End Sub

Private Sub DarSocket(Index As Integer)
Socket(Index).SendData "Socket" & vbTab & Index
End Sub



O Problema é que, ao enviar o pacote "Socket" & vbTab & Index
e o pacote "Logar" & vbTab & Index
não sei por que eles "grudam" e formam um pacote só =(
ex:
"Socket<TAB>0Logar<TAB>0"

O que pode ser?
USUARIO.EXCLUIDOS 24/08/2007 11:58:01
#232568
Resposta escolhida
Tentou colocar um DoEvents depois de enviar cada pacote ????
Talvez resolva...


Se não resolver, tente enviar um pacote, e ficar em Loop esperando uma resposta do servidor que ele recebeu...

Quando servidor responder vc sai do Loop e envia o outro pacote...
USUARIO.EXCLUIDOS 24/08/2007 12:05:00
#232569
Coloquei um DoEvents e funcionou mesmo.
Eu não sabia nem pra que servia o DoEvents
E ainda não sei
Duvida respondida
Obrigado

Mais só para não criar outro tópico
Para que serve DoEvents?
USUARIO.EXCLUIDOS 24/08/2007 12:11:26
#232570
Só para explicar...

o DoEvents faz com que sejam executados e finalizados todos os processamentos acima, antes de continuar...
desta forma ele envia e finaliza o envio antes de enviar o outro. fazendo com que eles não "encavalem"...
USUARIO.EXCLUIDOS 24/08/2007 12:12:38
#232571
Obrigado Novamente =D
Tópico encerrado , respostas não são mais permitidas