Comunicação em Rede - Velocidade e Segurança?

14 respostas
J

Por exemplo, um jogo de DAMAS em rede.

Qual seria um boa maneira de se comunicar com rapidez e segurança, ou seja, garantindo, desde que não hajam problemas externos, que a mensagens enviadas sejam sempre recebidas pelo adversário?

14 Respostas

rmendes08

O protocolo TCP já faz isso para você.

J

Da forma que eu fiz, utilizando o protocolo TCP, estava sendo lenta a comunicação.
Com UDP está sendo rápida, porém perde algumas mensagens.

rmendes08

Javax2011:
Da forma que eu fiz, utilizando o protocolo TCP, estava sendo lenta a comunicação.
Com UDP está sendo rápida, porém perde algumas mensagens.

Como assim lenta ?

J

Mais ou menos assim, a mensagem é enviado, meu sistema fica pausado até que essa mensagem seja recebida pelo outro usuário, porém, eu estava considerando essa comunicação lenta, levando em consideração que é um jogo, e não seria legal ter que esperar tipo, uns 10 ou 15 segundos pra fazer ou receber uma jogada.

rmendes08

Posso estar enganado … mas com certeza o problema não é o TCP, talvez a mensagem que você esteja enviando seja grande demais ou então você está abrindo e fechando a conexão para cada jogada. O ideal é ter a conexão aberta durante o jogo.

Andre_Rosa

Só completando:
Você pode criar um algoritmo de criptografia, para criptografar as mensagens antes de serem enviadas e descriptografá-las antes de lê-las.

J

É uma ótima idéia um algoritmo para criptografar e descriptografar, posso usar futuramente.

Mas nesse caso, com “segurança” eu quis dizer que as mensagens não se perdessem antes de chegar ao destinatário.
Ou seja, uma comunicação estável, eu acho.

rmendes08

Javax2011:
É uma ótima idéia um algoritmo para criptografar e descriptografar, posso usar futuramente.

Mas nesse caso, com “segurança” eu quis dizer que as mensagens não se perdessem antes de chegar ao destinatário.
Ou seja, uma comunicação estável, eu acho.

O termo correto é entrega confiável. E quando precisamos de entrega confiável basta usar TCP. Simples assim.

J

Bom, eu troquei a comunicação do meu sistema para UDP e acho que não dá mais tempo de voltar atrás.

Mas valeu, na próxima eu vou lembrar disso! xD

rmendes08

É trabalho ?

J

É um trabalho para apresentar na semana da tecnologia xD

ViniGodoy

10 ou 15 segundos é uma eternidade, mesmo no protocolo TCP. Para um jogo de turnos, como o de damas, é completamente irrelevante a diferença de tempo do UDP, TCP, use você criptografia ou não.

Você só vai ter que recorrer ao UDP em jogos se você precisar trocar pacotes numa velocidades superior a 10 por segundo.

By the way. Para garantir que UDP não perca, corrompa ou desordene mensagens, você provavelmente teria que recorrer ao que o TCP faz. Mas provavelmente, fazendo a implementação na mão, você faria com menos eficiência.
Mesmo que você faça a implementação em C, extremamente otimizada, dificilmente será mais rápido do que o TCP. Por ser um protocolo da indústria, é bem provável que parte dele esteja no seu hardware ou, no mínimo, rodando em modo kernel no seu SO.

J

Pior é que eu estou implementando na mão mesmo, uma forma de garantir a entrega dessas mensagem… kkkk
Eu literalmente troquei o certo pelo duvidoso. Mas é errando que se aprende né! :wink:

Vlw pela ajuda de todos!

rmendes08

Javax2011:
Pior é que eu estou implementando na mão mesmo, uma forma de garantir a entrega dessas mensagem… kkkk
Eu literalmente troquei o certo pelo duvidoso. Mas é errando que se aprende né! :wink:

Vlw pela ajuda de todos!

Normal, afinal, quem nunca colocou a culpa no compilador ?

Criado 15 de outubro de 2011
Ultima resposta 15 de out. de 2011
Respostas 14
Participantes 4