请问关于iErrorCode=WSAIoctl(SockRaw, SIO_RCVALL,&dwBufferInLen, sizeof(dwBufferInLen), &dwBufferLen, sizeof(dwBufferLen),&dwBytesReturned , NULL , NULL );这个函数中,SIO_RCVALL这个参数,为什么我使用的vc6.0中winsock2.h这个文件没有对它的定义呢?其中vc6.0运行在xp之上的。在使用的时候应该把它定义成多少呢?难道xp上不支持它吗?还有一个问题呢!!!!使用RAW_SOCK ,同时将协议参数设置成IPPROTO—UDP,socket(AF_INET,RAW_SOCK,IPPROTO_UDP);请问 我自填充一个UDP头和数据。然后用sendto发送出去,可以吗?但没有设置IP_HDRNCAL选项。不知道可不可以???我看过PING的代码,就自己填充的ICMP包头,然后发出去了。。不知道如果使用UDP可不可以。请解释原因??

解决方案 »

  1.   

    #define SIO_RCVALL            _WSAIOW(IOC_VENDOR,1)
    #define SIO_RCVALL_MCAST      _WSAIOW(IOC_VENDOR,2)
    #define SIO_RCVALL_IGMPMCAST  _WSAIOW(IOC_VENDOR,3)
    #define SIO_KEEPALIVE_VALS    _WSAIOW(IOC_VENDOR,4)
    #define SIO_ABSORB_RTRALERT   _WSAIOW(IOC_VENDOR,5)
    #define SIO_UCAST_IF          _WSAIOW(IOC_VENDOR,6)
    #define SIO_LIMIT_BROADCASTS  _WSAIOW(IOC_VENDOR,7)
    #define SIO_INDEX_BIND        _WSAIOW(IOC_VENDOR,8)
    #define SIO_INDEX_MCASTIF     _WSAIOW(IOC_VENDOR,9)
    #define SIO_INDEX_ADD_MCAST   _WSAIOW(IOC_VENDOR,10)
    #define SIO_INDEX_DEL_MCAST   _WSAIOW(IOC_VENDOR,11)
      

  2.   

    设置的是上层协议,做法都是一样的,对udp也可以,全要自己填充
      

  3.   

    SIO_RCVALL 在ws2tcpip.h里定义,记得好象是2。如果找不到头文件就试试。
    可以填充UDP头,照着UDP协议格式填就可以了,和ICMP一样。不只UDP,全部上层协议都可以,TCP都可以填,制造synflood!
      

  4.   

    楼上的高手,填充之后,如果不设置IP-HDRINCAL的话,发送出去后能达到预期的效果吗?请问 IPPROTO-RAW,和IPPROTO-IP 这两个参数是什么含义,用在什么地方???我这里所说的一切都是再WIN环境下。
      

  5.   

    各位高手,,关于SIO-RCVALL这个选项,我都找了。也都试过了。可是还是有错误啊。。错误代码是100022。
    _WSAIOW(IOC_VENDOR,1)  我也亲自算了。。这个宏是:(IOC_IN|(x)|(y))其中IOC_IN为:0X80000000,IOC_VENDOR为:0x18000000,那么结果是不是:0x98000000啊可是还是不行啊!!