我的系统是WinXP SP2,VC6.0,新建了一个MFC工程,mstcpip.h头文件也包含了,
WinSock2.h也包含了,ws2_32.lib 也包含了,Socket创建也没问题,为什么我在用
WSAIoctl的时候就是不对呢,WSAGetLastError返回的错误是10022,这是什么问题呢??
源程序如下:
int iErrorCode;
iErrorCode = WSAStartup(MAKEWORD(2,1),&wsaData);   
CheckSockError(iErrorCode);   
SockRaw = socket(PF_INET, SOCK_RAW, IPPROTO_IP);   
CheckSockError(SockRaw);   
//获取本机IP地址   
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(6666);
iErrorCode = bind(SockRaw, (PSOCKADDR)&addrSrv, sizeof(addrSrv));   
CheckSockError(iErrorCode);   
//设置SOCK_RAW为SIO_RCVALL,以便接收所有的IP包   
DWORD dwBufferLen[10];   
DWORD dwBufferInLen = 1;   
DWORD dwBytesReturned = 0;   
iErrorCode = WSAIoctl(SockRaw, SIO_RCVALL,&dwBufferInLen, sizeof(dwBufferInLen),&dwBufferLen, sizeof(dwBufferLen),&dwBytesReturned, NULL, NULL); //就是这里的问题!!  
iErrorCode = WSAGetLastError();
return 0;
希望各位大虾帮帮忙吧,小妹在这里跪谢了!!!

解决方案 »

  1.   

    iErrorCode = WSAIoctl(SockRaw, SIO_RCVALL,&dwBufferInLen, sizeof(dwBufferInLen),&dwBufferLen, sizeof(dwBufferLen),&dwBytesReturned, NULL, NULL); 
    没有什么错误啊 
    WSAGetLastError返回的错误是10022 是accept()进行连接时出错。
    端口被其他程序使用?
      

  2.   

    是不是和MFC中的设置有关系啊??
      

  3.   

    你的mptcpip.h是不是有问题啊,你把它贴上来吧!
      

  4.   

    好的,这是源代码:
    //  Copyright (C) Microsoft Corporation, 1996-1999
    #if _MSC_VER > 1000
    #pragma once
    #endif/* Argument structure for SIO_KEEPALIVE_VALS */struct tcp_keepalive {
        u_long  onoff;
        u_long  keepalivetime;
        u_long  keepaliveinterval;
    };// New WSAIoctl Options#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)
      

  5.   

    addrSrv.sin_addr.s_addr = inet_addr("127.0.0.1"); 你绑谁的IP地址呢?
      

  6.   

    socket(PF_INET, SOCK_RAW, IPPROTO_IP);==>>socket(PF_INET, SOCK_RAW, 0);