1、多个组播 和广播绑定同一个端口  ,bind 的时候有一个会失败 ,
2、说是要用SO_ADDRREUSE 具体怎么用呢,
3、或者其他方法?
非常感谢!!!
在线等!!!

解决方案 »

  1.   


    BOOL reuseaddr=TRUE;
    setsockopt(s,SOL_SOCKET,SO_REUSEADDR,(const char*)&reuseaddr,sizeof(BOOL));bind(...)不过一般最好不要这么用,尤其你这种情况
      

  2.   


    不可能收不到吧,应该所有数据都到这个端口会发生混乱所以说你这种用法本身就有问题一般重用端口是防止程序突然退出而系统没有释放端口,引起程序重启bind失败设置的
      

  3.   

      SO_REUSEADDR可以用在以下四种情况下。
        (摘自《Unix网络编程》卷一,即UNPv1)
        1、当有一个有相同本地地址和端口的socket1处于TIME_WAIT状态时,而你启
    动的程序的socket2要占用该地址和端口,你的程序就要用到该选项。
        2、SO_REUSEADDR允许同一port上启动同一服务器的多个实例(多个进程)。但
    每个实例绑定的IP地址是不能相同的。在有多块网卡或用IP Alias技术的机器可
    以测试这种情况。
        3、SO_REUSEADDR允许单个进程绑定相同的端口到多个socket上,但每个soc
    ket绑定的ip地址不同。这和2很相似,区别请看UNPv1。
        4、SO_REUSEADDR允许完全相同的地址和端口的重复绑定。但这只用于UDP的
    多播,不用于TCP。http://hi.baidu.com/kopccl/blog/item/7d89f08bbd001c11c8fc7ac9.html