multicast.imr_interface.s_addr = htonl(INADDR_ANY);
改成:
multicast.imr_interface.s_addr = INADDR_ANY;试试。

解决方案 »

  1.   

    RECV_IP_ADDR不是你的本地IP吧.改成自己的真实IP, 再试一次.
      

  2.   

    不用试上面的方法了,不行。
    不过10042不是参数不配,而是协议不可用。
    WSAENOPROTOOPT         10042   Protocol not available
      

  3.   

    RECV_IP_ADDR是用于加入一个组播组,接收组播数据的。
      

  4.   

    将头文件改为:
    #include <winsock2.h>
    #include <ws2tcpip.h>
      

  5.   

    这是一个多址广播程序,一般情况下要先枚举协议,确定支持多址广播的数据或控制平面,而且在98和nt下是不一样的。注意要使用2.0以上的WINSOCKET,即尽量使用WSA开头的函数,如WSASOCKET(),而不要用socket();加入组播可以使用WSAJOINLEAF()(好像是这个,具体的我记不清了)--如果成功它会返回一个SOCKET用来接收、发送数据。
      

  6.   

    我已经调通了。将头文件改为:
    #include <winsock2.h>
    #include <ws2tcpip.h>注意,不要
    #include <windows.h>
    否则会有重复定义的错误。