2013-10-09 36 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