代码之家  ›  专栏  ›  技术社区  ›  Evgeny Lazin

如何仅使用一个NIC接收ip多播

  •  1
  • Evgeny Lazin  · 技术社区  · 15 年前

    ip_mreq   mreq;
    
    mreq.imr_multiaddr.s_addr = multicast group address
    mreq.imr_interface.s_addr=  network interface address
    if (setsockopt( socet
                  , IPPROTO_IP
                  , IP_ADD_MEMBERSHIP
                  , (const void *)&mreq
                  , sizeof(mreq)) < 0)
    {
       std::cerr << "setsockopt error" << std::endl;
    }
    

    首先,我需要使用什么作为网络接口地址?使用GetAdapterAddresses api函数可以获得的网络接口的本地地址(与ipconfig返回的地址相同)或网络接口的索引?

    第二,windows真的能做到这一点吗,还是我只是花时间?

    使现代化 我刚刚读到WSAJoinLeaf函数,我想知道,在多播中不可能只使用一个NIC。

    2 回复  |  直到 10 年前
        1
  •  1
  •   Zoltan Szilagyi    15 年前

    第一:你的选择。看见 http://msdn.microsoft.com/en-us/library/ms738695(VS.85).aspx

    第二:是的,这肯定是可能的

        2
  •  0
  •   Steve-o    15 年前

    是的,这很有效,你可以使用 GetAdaptersInfo GetAdaptersAddresses 对两个家庭来说。

    请注意,mreq仅通过地址而不是索引指定接口,ip6_mreq和 GROUP_REQ