Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rspilki

Socket - listener UDP e TCP

Recommended Posts

Bom dia!

 

Sou novo por aqui e tenho estudado vb.net e asp.net...

No momento estou envolvido em um projeto que tem o objetivo de resgatar todos os pacotes UDP e todos os pacotes TCP que chegam em determinadas portas do servidor, traduzindo e salvando cada um desses pacotes em uma tabela específica do banco de dados...

Iniciei meus estudos por este tutorial: http://www.macoratti.net/net_soc1.htm.

Estou usando visual studio express 2012.

O que ocorre: apesar de eu ter conseguido criar o TCPServidor depende do TCPCliente. Ou seja, o TCPServidor não funciona da forma genérica como eu gostaria, além do que é apenas para TCP... e não para UDP como eu também preciso...

Fiz mais alguns estudos mas empaquei...

As dúvidas seriam as seguintes:

Necessariamente eu preciso criar um stream entre quem envia e quem recebe? No caso do TCP é necessário enviar um ACK... posso fazer isso simplesmente postando uma mensagem de sucesso?

 

No caso do UDP o ACK tb é necessário, não?

 

O que devo usar para receber pacotes UDP? Alguém tem um exemplo ou tutorial?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha cara, de forma genérica, UDP e TCP são completamente diferentes, você precisa de uma conexão entra sua aplicação e o local-fonte de onde estes dados irão vir, caso contrário é impossível. Você pode enviar um ping, ou uma mensagem, mas o problema é que o servidor deve responder com os pacotes que você quer, ele não vai enviar tudo de uma vez, você vai precisar buscar as informações no servidor.

 

Qual é a finalidade da aplicação?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quem envia os pacotes, tanto tcp's como udp's são equipamentos mobiles com única e exclusivamente esta finalidade...

 

O que eu sei é que esses equipamentos (estamos falando de dois, um envia via TCP e outro via UDP) vão enviar esses pacotes para o IP do meu servidor em uma porta específica, que eu posso definir a que eu bem entender...

 

Não existe uma periodicidade limitada ou pré-definida... podem chegar em determinado momento 300 pacotes num minuto e depois não receber nada por 2 ou 3 minutos... mas o normal é receber pacotes constantemente... praticamente a cada segundo...

 

O objetivo é resgatar estes pacotes, tratar os dados e inserir no BD...

 

Respondi tua dúvida?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, bom, minha sugestão para você é não fazer um unico programa, faça módulos, um para TCP e um para UDP usando a mesma conexão de dados (pesquise serialização de objetos).

 

Se o programa tem o propósito de receber os pacotes então o que você precisa fazer é manda o programa observar a porta definida e não o servidor, faça uma pesquisa sobre listening de portas para ter certeza que é possível analisar essas informações constantemente, mas tenha em mente que processos utilizando redes consomem muita memória.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado! A idéia é justamente essa... dois listeners...

 

Porém to travado no que postei aí... o meu primeiro listener na realidade houve apenas o que é enviado por um determinado programa... e não algo genérico... sacou?

 

Além disso, para UDP não encontrei exemplo algum... tudo muito ghenérico e vago...

 

Tem algum caminho, algum link, alguma documentação para me sugeririr?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cara, o negócio é ajustar para que os aparelhos móveis também ajudem no envio, porque não dá pra generalizar tudo, é muita informação...

 

Não tenho nenhuma dica de site também :/ como você mesmo disse, é tudo muito vago...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, muito obrigado...

 

Mas me deixou intrigado: o que quisestes dizer com "o negócio é ajustar para que os aparelhos móveis também ajudem no envio"?

 

Veja... não é suficiente saber que por exemplo preciso resgatar toda comunicação UDP ou TCP que chegar na porta 8000?

 

Baixei o wireshark e consigui ter uma ideia da coisa... agora precisava aproveitar esses pacotes de forma útil...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, explicando a frase. Os aplicativos nos aparelhos móveis precisam "conversar" a mesma lingua do software de escuta, ou seja, eles precisam ter neles um programa de escuta que pegará todos os pacotes enviados pelo sistema e os enviará diretamente para o programa, ou pelo menos uma cópia destes pacotes, sendo assim você teria uma comunicação direta entre o sistema que escuta e o sistema que fala.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.