2013-10-09 97 views
0

我刚刚在Windows套接字中发现了PGM(实用通用多播)。我读了msdn如何配置发送和接收套接字,但它不起作用。PGM winsock2无法创建套接字

这是迄今为止代码:

#pragma comment(lib,"Ws2_32.lib") 

#include <stdio.h> 
#include <iostream> 
#include <ws2tcpip.h> 
#include <Winsock2.h> 
#include <wsrm.h> 



int main(int argc, const char* argv[]) 
{ 
    DWORD dwRet = NO_ERROR; 

    WSADATA wsa_data; 
    if(WSAStartup(MAKEWORD(2, 0), &wsa_data) != 0) { 
     dwRet = GetLastError(); 
     WSACleanup(); 
     return dwRet; 
    } 

    SOCKET  s; 
    SOCKADDR_IN salocal, sasession; 
    int   dwSessionPort; 

    s = socket(AF_INET, SOCK_RDM, IPPROTO_RM); 

    if(s == INVALID_SOCKET) 
    { 
     dwRet = GetLastError(); 
     WSACleanup(); 
     return dwRet; 
    } 

    salocal.sin_family = AF_INET; 
    salocal.sin_port = htons (0); // Port is ignored here 
    salocal.sin_addr.s_addr = htonl (INADDR_ANY); 

    int iRet = bind (s, (SOCKADDR *)&salocal, sizeof(salocal)); 

    if(iRet == SOCKET_ERROR) 
    { 

     dwRet = GetLastError(); 
     WSACleanup(); 
     return dwRet; 
    } 

    dwSessionPort = 0; 
    sasession.sin_family = AF_INET; 
    sasession.sin_port = htons (dwSessionPort); 
    sasession.sin_addr.s_addr = inet_addr ("234.5.6.7"); 

    connect (s, (SOCKADDR *)&sasession, sizeof(sasession)); 

    return dwRet; 
} 

我得到错误代码10044(不支持接口类型)当我尝试创建套接字。我如何启用PGM的使用?

我目前正在使用安装了MSMQ的Windows 7。

编辑 这是我读过的msdn网站。

回答

0

找到解决方案,MSMQ没有正确安装。为了包含所有功能(多播支持),必须明确检查所有子文件夹,如下图所示。

enter image description here