Jump to content
LuisMendes330

Estabelecer conexão UDP fiável

Recommended Posts

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!

Share this post


Link to post
Share on other 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."

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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."

Share this post


Link to post
Share on other 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 ?

  • Vote 1

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

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.