PROBLEMAS COM SOCKETS
                    Boa noite pessoal!
Tenho uma aplicação cliente/servidor que no momento esta me dando um certa dor de cabeça!
Para preencher uma listview o cliente manda a requisição para o servidor, e servidor manda de volta dos dados para preencher a lisview:
[txt-size=2]-Servidor-[/txt-size]
[txt-size=2]-Cliente-[/txt-size]
O primeiro chega direitinho: P_LISTA§dado§dado§...§dado e é colocado corretamente na list view!
Porem a partir do segundo o servidor começa a juntar tudo e o packet vem assim: P_LISTA§dado§dado...§dadoP_LISTA§dado§dado§ e assim por diante.
Tentando resolver o problema tenti limpar o socket antes de envia-lo novamente. No código acima tem Socket = [Ô][Ô]
Mas mesmo assim não resolveu o problema. Então tentei da uma pausa de 1seg antes de enviar novamente. Deu certo ele mando todos os sockets separados. Mas a lista é preenchiada a cada 1seg e fica um tanto lento.
Ou seja qual seria uma alternativa para contornar este problema?
            Tenho uma aplicação cliente/servidor que no momento esta me dando um certa dor de cabeça!
Para preencher uma listview o cliente manda a requisição para o servidor, e servidor manda de volta dos dados para preencher a lisview:
[txt-size=2]-Servidor-[/txt-size]
  
Public Sub ListaProdutor(ByVal Index As Integer)
Dim Socket As String
Dim I As Integer
    
    Call Verifica_Conexao
    Call Conecta_BD
        Set RS = Conexao.Execute([Ô]SELECT * FROM PRODUTOR[Ô])
        
        If RS.RecordCount = 0 Then
            Call Msg(Index, [Ô]Não há produtores cadastrados![Ô], 2)
            Exit Sub
        End If
        
        While Not RS.EOF
            
            Socket = [Ô]P_LISTA[Ô] & SEP_CHAR & RS(0) & SEP_CHAR & RS(1) & SEP_CHAR & RS(2) & SEP_CHAR & RS(3) & SEP_CHAR & RS(4) & SEP_CHAR & RS(5)
            
            Call EnviarSocket(Index, Socket)
            Socket = [Ô][Ô]
            
            RS.MoveNext
        Wend
End Sub
[txt-size=2]-Cliente-[/txt-size]
Sub PreencheListaProdutor(ByVal CodProd As Double, ByVal Nome As String, ByVal Sobrenome As String, ByVal Email As String, ByVal Acesso As Byte, ByVal Login As String)
Dim lst As ListItem
    
    Set lst = frmCadProdutor.lstProdutores.ListItems.Add(, , CodProd)
            lst.SubItems(1) = Nome
            lst.SubItems(2) = Sobrenome
            lst.SubItems(3) = Email
            
            If Acesso = 1 Then
                lst.SubItems(4) = [Ô]Operador[Ô]
            ElseIf Acesso = 2 Then
                lst.SubItems(4) = [Ô]Supervidor[Ô]
            ElseIf Acesso = 3 Then
                lst.SubItems(4) = [Ô]Administrador[Ô]
            End If
            
            lst.SubItems(5) = Login
End SubO primeiro chega direitinho: P_LISTA§dado§dado§...§dado e é colocado corretamente na list view!
Porem a partir do segundo o servidor começa a juntar tudo e o packet vem assim: P_LISTA§dado§dado...§dadoP_LISTA§dado§dado§ e assim por diante.
Tentando resolver o problema tenti limpar o socket antes de envia-lo novamente. No código acima tem Socket = [Ô][Ô]
Mas mesmo assim não resolveu o problema. Então tentei da uma pausa de 1seg antes de enviar novamente. Deu certo ele mando todos os sockets separados. Mas a lista é preenchiada a cada 1seg e fica um tanto lento.
Ou seja qual seria uma alternativa para contornar este problema?
                    Mostre a chamada da Sub PreencheListaProdutor
                
                Socket.GetData Dados
    
    Pacote() = Split(Dados, SEP_CHAR)
    If Pacote(0) = [Ô]P_LISTA[Ô] Then
        Call PreencheListaProdutor(Val(Pacote(1)), Pacote(2), Pacote(3), Pacote(4), Val(Pacote(5)), Pacote(6))
    End Ifé esse ai.
                    Já resolvi o problema! Ao invés de enviar um socket de cada vez para o cliente o servidor faz um pacote só com todos os produtores e envia para o cliente. O cliente quando recebe separa os produtores e preenche a listview.
                
            
                        Tópico encerrado , respostas não são mais permitidas