zoukankan      html  css  js  c++  java
  • [转]IP_ADD_MEMBERSHIP : 组播错误 的解决方法:

    [转]IP_ADD_MEMBERSHIP : 组播错误 的解决方法:

    http://www.cnitblog.com/dvb-dvb/archive/2012/10/15/aa.html

    by default live library includes winsock.h through windows.h instead of winsock2.h, but requires Winsock 2 in  initializeWinsockIfNecessary(...) function.
    IP_ADD_MEMBERSHIP value for Winsock1 is 5, and for Winsock 2 is 12.
    Therefore socketJoinGroup(...) function is trying to call setsockopt(IP_ADD_MEMBERSHIP) from Winsock 2 with optname from Winsock 1.
    There is the confusion between Winsock versions.


    live555的 组播的code如下 :

     testAddr.s_addr = our_inet_addr("228.67.43.91"); // arbitrary
          Port testPort(15947); // ditto

          sock = setupDatagramSocket(env, testPort);
          if (sock < 0) break;

          if (!socketJoinGroup(env, sock, testAddr.s_addr))
       {
        env<<"Failed to socket Join Group ";
        break;
       }


    结果:

     if (setsockopt(socket, IPPROTO_IP, IP_ADD_MEMBERSHIP,
       (const char*)&imr, sizeof (struct ip_mreq)) < 0) {

    一直失败:错误提示为: 10042:

    修改为: if (setsockopt(socket, IPPROTO_IP, 12,
       (const char*)&imr, sizeof (struct ip_mreq)) < 0) {


    因为不同的socket版本,定义IP_ADD_MEMBERSHIP 的值不同:

    in socket ver1.0中:
    #define IP_ADD_MEMBERSHIP 5

    in socket ver2.0中:
    #define IP_ADD_MEMBERSHIP 12

  • 相关阅读:
    sql 相关子查询
    sql 执行计划
    SQL表连接查询(inner join、full join、left join、right join)
    sql执行顺序
    sql 语句 嵌套子查询 执行顺序分析
    只有程序员才看得懂的情书
    Give Me an E
    hdu 1114 (背包变形)
    模版 并查集
    背包 讲解
  • 原文地址:https://www.cnblogs.com/vc60er/p/4214258.html
Copyright © 2011-2022 走看看