Nous utilisons la multidiffusion dans notre application pour diffuser efficacement les mises à jour des clients connectés aux niveaux intermédiaires. Je suis continuellement demandé par des ingénieurs de réseau sur "comment notre multidiffusion fonctionne" et quels protocoles de multidiffusion il prend en charge. Je suis intrigué par ce type de questions, en ce sens en ce qui me concerne, nos processus client rejoignent simplement un groupe de multidiffusion en exécutant les commandes suivantes:En tant que développeur, ai-je besoin de bien comprendre les protocoles de multidiffusion tels que IGMP, PIM-DM et PIM-SM?
m_sSocket = socket(PF_INET, SOCK_DGRAM, 0);
if (m_sSocket == INVALID_SOCKET)
{
SocketError();
return false;
}
sockaddr_in saServer;
ZeroMemory(&saServer, sizeof(sockaddr_in));
saServer.sin_family = AF_INET;
saServer.sin_addr.s_addr = htonl(INADDR_ANY);
saServer.sin_port = htons(nMulticastPort);
if (bind(m_sSocket, (sockaddr *)&saServer, sizeof(sockaddr_in)) == SOCKET_ERROR)
{
SocketError();
return false;
}
m_ipMulticast.imr_multiaddr.s_addr = inet_addr(tostring(strMulticast).c_str());
m_ipMulticast.imr_interface.s_addr = htons(INADDR_ANY);
// join the multicast group
if (setsockopt(m_sSocket, IPPROTO_IP, IP_ADD_MEMBERSHIP,
(LPCSTR)&m_ipMulticast, sizeof(ip_mreq)) == SOCKET_ERROR)
{
SocketError();
return false;
}
Il n'y a pas de distinction là-dedans à ce protocole de multidiffusion, il devrait utiliser. Est-ce que quelqu'un a des suggestions utiles sur la façon dont je réponds à ce type de questions? Pour le moment, je fournis simplement l'adresse/le port sur lequel nous sommes en multidiffusion et je leur demande d'ouvrir cette adresse/port sur leurs routeurs réseau. Cependant cela ne semble pas être suffisant et ils ont besoin de plus d'informations (?)
Ce ne sont pas des questions que Alan aurait besoin d'être impliqué, ce sont toutes les décisions d'architecture du réseau.Il n'a pas le choix entre dense et clairsemé (les ingénieurs du réseau choisiront cela en fonction des besoins de son application), de même pour l'aspect vlan. – avirtuos