アプリケーションでマルチキャストを利用して、中間層に接続されたクライアントに更新を効率的にブロードキャストします。ネットワーク エンジニアから、「当社のマルチキャストはどのように機能するか」と、サポートされるマルチキャスト プロトコルについて、よく尋ねられます。私に関する限り、私たちのクライアント プロセスは、次のコマンドを発行することによって、マルチキャスト グループに参加するだけです。
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;
}
そこには、どのマルチキャスト プロトコルを使用する必要があるかについての区別はありません。 この種の質問に私がどのように答えるかについて、何か有益な提案はありますか? 現時点では、マルチキャストに使用するアドレス/ポートを提供し、ネットワーク ルーターでこのアドレス/ポートを開くよう依頼するだけです。しかし、これでは十分ではないようで、より多くの情報が必要です (?)