2013-10-09 10 views
0

방금 ​​Windows 소켓에서 PGM (Pragmatic General Multicast)에 대해 알았습니다. 내가 보내고 소켓을 구성하는 방법을 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