 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
iplouzada Novato

Registrado: Sexta-Feira, 22 de Mai de 2015 Mensagens: 2
|
Enviada: Sex Mai 22, 2015 4:05 pm Assunto: Cliente e Servidor (SOCKETS) |
|
|
Olá pessoal.
Sou bem novato na programação em geral, e estou tentando fazer alguma coisinha utilizando sockets.
O meu objetivo, é pegar as coordenadas do cursor, enviar pro servidor, e do servidor, enviar pra todos os clientes conectados. Bem, de certa forma funciona. O problema é o seguinte: eu envio as coordenadas em uma string com o seguinte formato: (coordenadaX + '-' + coordenadaY), sempre que o mouse se move. Quando um cliente receber esta string, ele manipula a string, e da posição 0 até o (traço-1), consigo a coordenada x, e do (traço+1), até o final, consigo a coordenada Y. Até ai tudo bem, até funciona, mas quando eu movo o mouse muito rapido, ele parece mandar mais de uma mensagem por vez, causando erros do tipo:
1234-32 is not a valid integer value.
Ou seja, parece estar pegando a coordenada Y da ultima string, e mais a outra string completa, ja que a coordenada Y é obtida depois do traço até o final.
Bom, não acredito que seja necessário mostrar meu código, mas caso seja, eu coloco.
Caso alguem saiba sobre o assunto, ficarei muito grato. |
|
| Voltar ao Topo |
|
 |
claudio.ferreira Profissional


Registrado: Quarta-Feira, 18 de Setembro de 2013 Mensagens: 667
|
Enviada: Sex Mai 22, 2015 5:15 pm Assunto: |
|
|
Penso que você deveria somente enviar as coordenadas quando o mouse parasse em algum lugar. Com o mouse em movimento e enviando a cada movimento feito você vai ter que enfileirar as chamadas ao server pois o send é muito mais lento que o movimento do mouse. _________________ Sistema SNGPC para farmácias
http://www.cmasistemas.com.br
Rastreabilidade de Medicamentos
https://www.sncm.com.br
Soluções em Delphi
https://delphisolutions.wordpress.com/
.
"E não sabendo que era impossível, foi lá e fez"
Mark Twain |
|
| Voltar ao Topo |
|
 |
strak2012 Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014 Mensagens: 1518 Localização: Maceió - AL
|
Enviada: Dom Mai 24, 2015 2:10 am Assunto: |
|
|
use delimitadores ou protocolos.
Delimitadores
[Mouse@X:Y] aqui você sabe que o comando inicia em [ e finaliza em ] e que X inicia logo após o @ finalizando em : que por sua vez o Y inicia logo após o : e finalizando em ]
Cheque sempre se o comando chegou completo pois socket costuma partir ou juntar os texto enviado, que acredito que seja seu problema.
Imagine que ao fazer dois sendo em seguida no seu caso:
123-234
125-237
Isso pode chegar ao servidor da seguinte forma
123-234125-237
Sem delimitadores adequados não dá para saber onde começa ou termina os dois sends.
Protocolos
vc cria bem parecido com os delimitadores exemplo
X$80ADY$12FD
Onde todo os sends possui o mesmo tamanho
Ou seja 12
Sendo X a coordenada X e $80AD seu valor em hexadecimal contendo dois bytes
O mesmo vale para.Y que tem seu valor igual a $12FD
Em delimitadores você precisa sempre questionar se tem o início e fim de comando antes de processar as informações.
Protocolos você precisa sempre questionar se o mesmo possui o tamanho correto neste caso 12 caso contrário o mesmo deve ser descartado.
Bom é espero que isso te dê a idéia de como fazer. _________________ Tudo podemos quando tudo sabemos! |
|
| Voltar ao Topo |
|
 |
strak2012 Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014 Mensagens: 1518 Localização: Maceió - AL
|
Enviada: Dom Mai 24, 2015 2:18 am Assunto: |
|
|
Aqui mesmo no fórum você encontra resposta de como solucionar problemas com os sends que vieram juntos ou partidos. _________________ Tudo podemos quando tudo sabemos! |
|
| Voltar ao Topo |
|
 |
iplouzada Novato

Registrado: Sexta-Feira, 22 de Mai de 2015 Mensagens: 2
|
Enviada: Dom Ago 16, 2015 11:06 pm Assunto: |
|
|
| strak2012 escreveu: | use delimitadores ou protocolos.
Delimitadores
[Mouse@X:Y] aqui você sabe que o comando inicia em [ e finaliza em ] e que X inicia logo após o @ finalizando em : que por sua vez o Y inicia logo após o : e finalizando em ]
Cheque sempre se o comando chegou completo pois socket costuma partir ou juntar os texto enviado, que acredito que seja seu problema.
Imagine que ao fazer dois sendo em seguida no seu caso:
123-234
125-237
Isso pode chegar ao servidor da seguinte forma
123-234125-237
Sem delimitadores adequados não dá para saber onde começa ou termina os dois sends.
Protocolos
vc cria bem parecido com os delimitadores exemplo
X$80ADY$12FD
Onde todo os sends possui o mesmo tamanho
Ou seja 12
Sendo X a coordenada X e $80AD seu valor em hexadecimal contendo dois bytes
O mesmo vale para.Y que tem seu valor igual a $12FD
Em delimitadores você precisa sempre questionar se tem o início e fim de comando antes de processar as informações.
Protocolos você precisa sempre questionar se o mesmo possui o tamanho correto neste caso 12 caso contrário o mesmo deve ser descartado.
Bom é espero que isso te dê a idéia de como fazer. |
Muito obrigado Strak, consegui dessa forma, muito eficaz delimitar a string enviada, funcionando perfeitamente. |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|