WSADATA wsa;
WSAStartup(MAKEWORD(2,2),&wsa);
char szResult[10];
SOCKET s=socket(AF_INET,SOCK_RAW,IPPROTO_IP);//或者IPPROTO_RAW
if(INVALID_SOCKET==s)
{
int dwErr=WSAGetLastError();
sprintf(szResult,"%ld",dwErr);
AfxMessageBox(CString(szResult));
}
上述代码总是返回错误10013,上网查说是权限问题,不解,我用的是VS2005,Vista操作系统,求指教!!!

解决方案 »

  1.   

    SOCKET s=socket(AF_INET,SOCK_RAW,IPPROTO_IP);//或者IPPROTO_RAW
    第二个参数有问题吧?SOCK_STREAM  TCP流;SOCK_DGRAM UDP的包。你写的那个一般我都没见到
      

  2.   

    SOCK_RAW problem in Vista
      

  3.   

    原始套接字提供管理下层传输的能力,他们可能会被恶意利用。因此,仅Administrator组的成员能够窗口SOCK_RAW类型的套接字
      

  4.   

    好像xp sp2以后就不支持SOCK_RAW了
      

  5.   

    TCP/IP Raw Sockets
      

  6.   

    Vista系统运行程序,可能会自动给你的用户权限降级。所以权限就不够了。xp系统比较好