c++ - 多播在 Windows Vista 上不工作

标签 c++ windows mfc windows-vista

虽然我尝试在 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;      
    }

最佳答案

好吧,经过大量实验后,我无法弄清楚为什么多播无法正常工作,然后突然发现这是因为 Network Discovery 在我的 Vista 上关闭了。

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

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

关于c++ - 多播在 Windows Vista 上不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4436820/

相关文章:

c++ - 我可以使用纯原生 C++ 为 Windows 8 Metro 编写应用程序吗?

windows - 使用HTA应用程序播放实时流

C++链表销毁函数

c++ - 迭代器删除 C++ 的自定义实现

c++ - 数组仅在第一次返回错误值

c++ - 调整无模式属性表的大小

mfc - MFC中的单选按钮选择更改

c++ - 10038 套接字错误

windows - 我可以使用 win32 Setup API 检测 USB 设备何时插入或拔出吗?

windows - MFC 应用程序在 NTDLL.dll 中崩溃