Ir para conteúdo
Fórum Script Brasil
  • 0

SendData com Winsock


baloweb

Pergunta

Bom dia,

Sou novo em programação e tenho um duvida quanto a utilização do winsock.

Quero enviar através do SendData uma string para campos dferentes entre cliente e servidor, ou seja que uma variável vá para uma text1 e que outra vá para a text2 ., tentei atraves do mesmo objeto send e não funcionou. O que esta acontecendo é que a string é enviada só para a text1

Segue o código abaixo , e fico agradecido se alguém pode me ajudar

Código no Servidor:

Private Sub wskServidor_DataArrival(ByVal bytesTotal As Long)

dim strdados1 as string
dim strdados2 as string

   wskServidor.GetData strdados1
   Text1.text = strdados1

   wskServidor.GetData strdados2
   Text2.text = strdados2
   

end sub
Código no envio do cliente:
Private Sub wskCliente_DataArrival(ByVal bytesTotal As Long)
   
   Dim strdados1 As String
   Dim strdados2 As String
   
   
   wskCliente.GetData strdados1
   Text1.text = strdados1
   

   wskCliente.GetData strdados2
   Text2.text = strdados2
   

End Sub
'Envio pelo command
Private Sub Command2_Click()

wskCliente.SendData Text1.Text
wskCliente.SendData Text2.Text

End Sub

Abrs

Luciano

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

é, isso ai q você ta fazendo não funciona muito bem não.

primero de tudo, na hora de enviar:

wskCliente.SendData Text1.Text
wskCliente.SendData Text2.Text[/code] dois SendData() assim, um seguido do otro, não costuma funcionar. pelo menos, se eu me lembro bem das minhas epocas de winsock, isso nunca funcionou pra mim. o segundo SendData() ta sendo chamado muito rapido, ele ainda não acabou de processar o primero, então ele vai ignorar o segundo. se você quer mandar dois dados seguidos, o melhor é dar um tempo entre o primero e o segundo com um timer, ou talvez com um Sleep() não sei se funciona. e aqui:
[code]Private Sub wskServidor_DataArrival(ByVal bytesTotal As Long)

dim strdados1 as string
dim strdados2 as string

   wskServidor.GetData strdados1
   Text1.text = strdados1

   wskServidor.GetData strdados2
   Text2.text = strdados2
  

end sub

geralmente, a gente usa um DataArrival() pra cada SendData(). bom, não sei se o GetData() tem q estar necessariamente vinculado ao DataArrival(), então não vou dizer q dois GetData() no mesmo DataArrival() não pode funcionar. entretanto, mesmo q seja possivel, acho q seria improvavel q você sempre consiga obter os dados direitinho. tb pelo mesmo motivo do SendData acima, não tem como você saber se o segundo dado chegou, a unica forma segura de fazer isso (se é q funciona de outra forma) é esperar um proximo DataArrival().

você deveria rever a forma de usar o winsock. o q a gente costuma fazer é, quando você enviar o dado, enviar alguma coisa junto na string, q identifique a q se refere o dado.

por exemplo, quando for pra enviar o texto do textbox1, você poria na frente da string os caracteres "t1:" e quando for do textbox2, você poria "t2:".

ai quando os dados chegassem, você podia testar com um if pra saber de qual textbox se refere.

ou ainda, você podia mandar os dois textos no mesmo SendData(), separados, por exemplo por "|". e ai no DataArrival(), você dava um Split() pra dividir e punha cada string no seu relativo textbox.

fora isso tb não entendi porque você tem dois DataArrival(). um no cliente e otro no servidor.

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado pela ajuda Kuroi

Realmente a solução foi essa:

um pequeno Slepp de 1 segundo entre os envios do SendData e uma condicional no DataArrival garantiu o funcionamento perfeito...

segue abaixo como ficou

'Arrival

If Label1.Caption = "" Then

wskServidor.GetData strdados

Label1.Caption = strdados

Else

wskServidor.GetData Teste

Label2.Caption = Teste

End If

Command

wskCliente.SendData text1.Text

Espere (1)

wskCliente.SendData text2.Text

Obrigado pela ajuda

Abrs

Luciano

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...