我自打包了一些UDP数据包
发到另一张卡上 直接用recvfrom接收不到呀我用抓包的工具 抓了一下 这里有显示 我的UDP包发到里
我要怎么接收下来啊?

解决方案 »

  1.   

    自己本机抓下包,看发送地址和端口号对不对,在本机客户端和服务端测试通信成功,再把服务端和客户端在不同机器上测试的,看是不是防火墙的原因,WINDOWS防火墙也拦截UDP包的。
      

  2.   

    楼主  我在
    http://topic.csdn.net/u/20090904/10/93858339-9a86-4a14-9c26-57a8315d00ff.html
    回复了你的帖子
    我的分分
      

  3.   

    原因很简单,你没用写cheksum函数,你算的是0,IP协议默认要比较checksum的,不一致被丢掉了
      

  4.   

    我加了 校验和函数了 不过还是收不到
    我把udp的校验值 不赋值
    还收到一些 貌似不完整 不确定 反正是有反应了 真奇怪
    校验函数 如下
    USHORT CheckSum(USHORT *buffer, int size) 

    unsigned long cksum=0; 
    while(size >1) 

    cksum+=*buffer++; 
    size -=sizeof(USHORT); 

    if(size ) 

    cksum += *(UCHAR*)buffer; 
    }  cksum = (cksum >> 16) + (cksum & 0xffff); 
    cksum += (cksum >>16); 
    return (USHORT)(~cksum); 
    } unsigned short UdpCheckSum(const char *pTcpData, const char *pPshData, UINT nTcpCount)
    {
    unsigned short sCheckSum = ~CheckSum(pTcpData,nTcpCount);
    unsigned long checkSum = sCheckSum;
    checkSum <<= 16;
    sCheckSum = ~CheckSum(pPshData,12);
    checkSum += sCheckSum; return CheckSum((char*)&checkSum,4);
    }