首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

windows上WSAIoctl 出现“10045”异常,代码已贴出,麻烦不吝赐教

2012-09-21 
windows下WSAIoctl 出现“10045”错误,代码已贴出,麻烦不吝赐教C/C++ codeWSADATA wsData/* 启动2.2版本的S

windows下WSAIoctl 出现“10045”错误,代码已贴出,麻烦不吝赐教

C/C++ code
WSADATA wsData;/* 启动2.2版本的Socket,并将Socket版本信息保存到wsData中 */    WSAStartup(MAKEWORD(2,2),&wsData);//2.2        m_socket = socket(AF_INET,SOCK_RAW,IPPROTO_IP);//IPPROTO_IP        int timeout = 1000; //超时1秒    //设置接收数据的超时时间    if (SOCKET_ERROR==setsockopt(m_socket,SOL_SOCKET,SO_RCVTIMEO,(const char*)&timeout,sizeof(timeout)))    {        AfxMessageBox("接收超时");        return FALSE;    }    //     BOOL flag=TRUE;/* 设置IP头操作选项 */    //     setsockopt(m_socket,IPPROTO_IP,IP_HDRINCL,(char*)&flag,sizeof(flag));            char hostName[128];/* 获取本地主机名 */    //    CString hostName;    memset(hostName,0,128);                hostent * pHostIP;/* 根据主机名获取主机信息 */    pHostIP=gethostbyname(hostName);        /* 封装IP地址信息 */    sockaddr_in addr_in;    addr_in.sin_addr=*(in_addr*)pHostIP->h_addr_list[0];    addr_in.sin_family=AF_INET;    addr_in.sin_port=htons(6000);        if (SOCKET_ERROR==bind(m_socket,(SOCKADDR*)&addr_in,sizeof(addr_in)))    {        AfxMessageBox("绑定失败!");        return FALSE;    }        #define SIO_RCVALL _WSAIOW(IOC_VENDOR,1)    DWORD dwBufferLen[10];    DWORD dwBufferInLen=1;    DWORD dwBytesReturned=0;        if (INVALID_SOCKET==WSAIoctl(m_socket,SIO_RCVALL,&dwBufferInLen,sizeof(dwBufferInLen),&dwBufferLen,sizeof(dwBufferLen),        &dwBytesReturned,NULL,NULL))    {        CString str;        str.Format("%d",WSAGetLastError());//WSAEOPNOTSUPP   指定的ioctl命令无法实现        AfxMessageBox(str);        AfxMessageBox("设置缓冲区错误!");                closesocket(m_socket);        return FALSE;    }            return TRUE;


[解决办法]
10045:参考的对象类型不支持尝试的操作。 

你的系统是Win7 ?

热点排行