【问题标题】:Multicast is not working on Windows Vista多播在 Windows Vista 上不起作用
【发布时间】:2010-12-14 07:26:29
【问题描述】:

当我尝试在 win XP 中将某些内容多播到 IP 范围时,它工作正常,但是当我在 Win VIsta 上运行相同的应用程序时,我无法进行多播。我需要为 Win Vitsa 配置或添加发布者信息吗?

编辑:

struct sockaddr_in staddr;
    memset(&staddr, 0, sizeof(struct sockaddr_in));
    staddr.sin_family = AF_INET;
    staddr.sin_port = htons(SSDP_PORT); // Use the first free port
    staddr.sin_addr.s_addr=inet_addr(SSDP_MULTICAST_ADDRESS);

    int socklen = sizeof(struct sockaddr_in);

编辑 2

Socket Creation
int ibindstatus =0 ;
    try
    {
    //Initailize the WinSock
    WSADATA wsaData;
    WSAStartup(MAKEWORD(2,2), &wsaData);

   struct in_addr iaddr;
   struct sockaddr_in staddr;
   // set content of struct saddr and imreq to zero
   memset(&staddr, 0, sizeof(struct sockaddr_in));
   memset(&iaddr, 0, sizeof(struct in_addr));

   // open a UDP socket

   m_iSocket = socket(AF_INET, SOCK_DGRAM, 0);
   if ( m_iSocket < 0 )     
    {       
      return SOCKET_NOT_AVAILABLE;
    } 

   staddr.sin_family = AF_INET;
   staddr.sin_port = htons(SSDP_PORT); // Use the first free port
   staddr.sin_addr.s_addr = htonl(INADDR_ANY); // bind socket to any interface 

   ibindstatus = bind(m_iSocket, (struct sockaddr *)&staddr, sizeof(struct sockaddr_in));
   if ( ibindstatus < 0 )
   {
      return SOCKET_BIND_ERROR;
   }


    //send the buffer
    int iSendStatus = sendto(m_iSocket, cSendData, lSendDataLen, 0,
                     (struct sockaddr *)&staddr, socklen);  
    if(iSendStatus< 0)
    {
       return SEND_ERROR;      
    }

【问题讨论】:

  • 你能发布一些代码吗?
  • 先检查 Wireshark,也许你的机器通过错误的适配器发送。
  • 如何创建套接字?
  • 您检查过防火墙设置吗?尝试将其关闭以进行测试,看看它是否有效,如果有效 - 您必须重新配置防火墙。
  • @Tomek,是的,防火墙是关键,现在多播工作正常,有什么方法可以将我的应用程序添加到受信任列表中,这样用户就不必费心调整防火墙设置

标签: c++ windows mfc windows-vista


【解决方案1】:

经过大量实验后,我无法弄清楚为什么 Multicast 不起作用,突然发现这是因为我的 Vista 上的 Network Discovery 关闭了。

所以如果我在这里执行此操作,请转到 控制面板->设置文件共享(在 网络和 Internet 下)->共享和发现,然后打开或关闭网络发现

嗯,这对我的应用程序有用,源代码就是我在我的问题中发布的内容。完全希望这将节省您的一些时间和挫败感。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 2011-06-14
    相关资源
    最近更新 更多