0

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

这是到目前为止的代码:

#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网站。

4

1 回答 1

0

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

在此处输入图像描述

于 2013-10-10T10:43:34.960 回答