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 Sub
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?
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