我们在我们的应用程序中利用多播向连接到中间层的客户端有效地广播更新。网络工程师不断向我询问“我们的多播如何工作”以及它支持哪些多播协议。我对这些类型的问题感到困惑,就我而言,我们的客户端进程只需通过发出以下命令来加入多播组:
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;
}
那里没有关于它应该使用什么多播协议的区别。 有人对我如何回答这类问题有任何有用的建议吗? 目前我只是提供我们多播的地址/端口,并要求他们在他们的网络路由器上打开这个地址/端口。然而,这似乎还不够,他们需要更多信息(?)