Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

LuisMendes330

Estabelecer conexão UDP fiável

Mensagens Recomendadas

LuisMendes330

Boa tarde pessoal,

Preciso de estabelecer uma conexão UDP entre duas aplicações, uma cliente outra servidor, que permita transferir um ficheiro entre dois computadores. A ligação UDP deve ser fiável. Não se devem perder pacotes e estes devem ser recebidos pela mesma ordem que foram enviados...

Alguém me pode dar umas luzes de como vou ter de estruturar este projecto?

Obrigado!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

tens que ser tu a implementar ou podes utilizar third-parties lib?


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
LuisMendes330

Tenho de ser eu a implementar e tem de ser UDP.nunca ouvi falar em third-parties lib...

Vou ver melhor o protocolo sliding window , obrigado Rui.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax
nunca ouvi falar em third-parties lib...

Uma third-party lib, e' uma biblioteca desenvolvida por outra pessoa. no teu caso seria um wrapper ou uma class de controlo do UDP que te tratasse do "dirty work".


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
shumy

Vamos lá ver primeiro qual é a utilidade disto!

1. Isto é um trabalho escolar, então não deves poder utilizar outras libs, não?

2. Se não é, qual é o interesse de utilizar UDP? Libs em cima do UDP para simular TCP é o que afinal? Porque não o TCP ?

  • Voto 1

Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
LuisMendes330

É um trabalho escolar...

Tive a ver e pelo método checksum não consigo implementar fiabilidade?

Alguém me pode dar umas ideias?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Tive a ver e pelo método checksum não consigo implementar fiabilidade?

não

razão : perda de pacotes

Alguém me pode dar umas ideias?

já foram dadas


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
LuisMendes330

Para tornar a conexão UDP fiável tenho de implementar estas condições certo?Garantia de entrega dos dados, garantia de entrega ordenada,detecção de erros,correcção de erros por retransmissão. Ou seja criar um cabeçalho com uma variável nº de sequência do datagrama e uma condição no lado do cliente que apenas deixa a socket fechar se o nº de sequência for o correcto, e se a checksum estiver correcta para verificar se houve perda de dados.Se verifica-se esta condição criar uma nova conexão UDP.Se não voltar a enviar o segmento.É quase implementar um cabeçalho de uma conexão TCP na meu código UDP?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Para tornar a conexão UDP fiável tenho de implementar estas condições certo?Garantia de entrega dos dados, garantia de entrega ordenada,detecção de erros,correcção de erros por retransmissão. Ou seja criar um cabeçalho com uma variável nº de sequência do datagrama e uma condição no lado do cliente que apenas deixa a socket fechar se o nº de sequência for o correcto, e se a checksum estiver correcta para verificar se houve perda de dados.Se verifica-se esta condição criar uma nova conexão UDP.Se não voltar a enviar o segmento.É quase implementar um cabeçalho de uma conexão TCP na meu código UDP?

parabéns ... percebeste a razão de existir o TCP : fiabilidade

agora toca a implementar isso tudo ...


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Flinger

Para tornar a conexão UDP fiável tenho de implementar estas condições certo?Garantia de entrega dos dados, garantia de entrega ordenada,detecção de erros,correcção de erros por retransmissão. Ou seja criar um cabeçalho com uma variável nº de sequência do datagrama e uma condição no lado do cliente que apenas deixa a socket fechar se o nº de sequência for o correcto, e se a checksum estiver correcta para verificar se houve perda de dados.Se verifica-se esta condição criar uma nova conexão UDP.Se não voltar a enviar o segmento.É quase implementar um cabeçalho de uma conexão TCP na meu código UDP?

Basicamente sim. Se estudares bem o funcionamento do TCP, basicamente tens de implementar esse protocolo sobre pacotes udp (é um exercício bastante comum em disciplinas de redes). Podes começar com uma ligação simples, onde basicamente para cada pacote enviado, envias um ACK ou NACK de resposta, e depois implementar um sistema de Janela deslizante para optimizar as comunicações.

http://histrory.visualland.net/tcp_swnd.html

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.