我想问一个关于ioctlsocket的问题,求高手助我一力

john_1990 2012-08-12 03:44:50
本人在使用原始的套字来开始一个网络嗅探器时,利用了msdn描述的ioctlsocket来设置SIO_RCVALL达到混合模式,但系它的错误码居然是10045,那意思是参考的对象类型不支持尝试的操作。(PS:我是用管理员身份运行的了啦,开发环境是vc6.0,还有就是我的系统是win7)
...全文
166 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Geoff08Zhang 2012-09-26
  • 打赏
  • 举报
回复
你可以看一下《WinSock网络编程经络》第20章套接口选项,内容摘录如下:
========================
WinSock中的ioctlsocket是Berkeley套接口功能的子集,只适用于套接口,很多命令也不支持,如:SIOCSPGRP、FIOASYNC等。WinSock中,函数ioctlsocket只支持三个命令:FIONBIO、FIONREAD、SIOCATMARK。
========================

你的命令SIO_RCVALL不被支持,所以返回WSAEOPNOTSUPP.
vkjsimde 2012-09-26
  • 打赏
  • 举报
回复
http://stackoverflow.com/questions/6108715/capturing-packets-on-windows-7
参考下这里,有的人能在win7下运行,但好像的又不行
danscort2000 2012-08-13
  • 打赏
  • 举报
回复
尝试把WIN7里的IP V6支持关闭掉,并直接关闭UAC
如果你用的是64位WIN7,使用64位原生代码再尝试
Gloveing 2012-08-12
  • 打赏
  • 举报
回复
ERROR CODE:
10045 The attempted operation is not supported for the type of object referenced. WSAEOPNOTSUPP
以下仅供参考:
//	Result = WSAIoctl(SnifferSocket, SIO_RCVALL, &dwBufferInLen, sizeof(dwBufferInLen), 
// &dwBufferLen, sizeof(dwBufferLen), &dwBytesReturned, NULL, NULL);
Result =ioctlsocket(SnifferSocket, SIO_RCVALL, &dwBufferInLen);

if (Result == SOCKET_ERROR)
{
printf("WSAIoctl failed with error %d\n", WSAGetLastError());
closesocket(SnifferSocket);
return 0;
}

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧