Java: Determine receber endereço quando receber com MulticastSocket
-
06-07-2019 - |
Pergunta
Eu estou usando MulticastSocket para receber pacotes UDP multicast. Como posso determinar para qual endereço de tal pacote foi enviado? Com os métodos fornecidos, sou apenas capaz de determinar o endereço do remetente.
Claro, eu sou o único que define o para-endereço ao criar o soquete de escuta, mas eu posso realmente ter certeza sobre isso? E quanto a pacotes de difusão? E sobre os pacotes que de alguma forma acabam aqui? Eu realmente quero distinguir se o pacote foi realmente multicast.
Obrigado!
Update: Atualmente parece que pacotes unicast apenas enviados para essa porta também acabam nos soquetes multicast receber () :( ligação a dispositivos também me dá nenhum melhores resultados
Solução
Eu sou um pouco confuso sobre os detalhes, mas um pacote de multicast terá sido enviado para a combinação IP / porta que subscreveu (e esta informação será no pacote, em algum lugar), supondo que você conseguiu ter um caminho claro de roteadores intermediários que entendem multicast. Se você quer ter a certeza da MulticastSocket está recebendo a partir do interface de rede direita, há um monte de funções para vinculá-lo a uma interface específica.
Eu não acho que você tem nenhuma maneira de saber se o pacote era "realmente" multicast, ou seja, alguém sempre pode forjar um, já que não há segurança real construído em.