WSAIoctl

news/2024/12/13 17:21:22/

int WSAAPI WSAIoctl(SOCKET s,//一个套接口的句柄。
DWORD dwIoControlCode,//将进行的操作的控制代码
LPVOID lpvInBuffer, //输入缓冲区的地址
DWORD cbInBuffer,//输出缓冲区的地址
LPVOID lpvOutBuffer, //输入缓冲区的大小
DWORD cbOutBuffer, //输出缓冲区的大小
LPDWORD lpcbBytesReturned,//输出实际字节数的地址
LPWSAOVERLAPPED lpOverlapped,//WSAOVERLAPPED结构的地址
LPWSAOVERLAPPED lpCompletionRoutine//一个指向操作结束后调用的例程指针
)
返回值:
调用成功后,WSAIoctl ()函数返回0。否则的话,将返回SOCKET_ERROR错误,应用程序可通过WSAGetLastError()来获取相应的错误代码。
错误代码:
WSANOTINITIALISED 在调用本API之前应成功调用WSAStartup()。
WSAENETDOWN 网络子系统失效。
WSAEINVAL cmd不是一个合法的命令;或者一个输入参数非法;或者命令对于该种类型的套接口不适用。
WSAEINPROGRESS 在一个回调函数运行时调用了该函数。
WSAENOTSOCK 描述字不是一个套接口。
WSAEOPNOTSUPP 指定的ioctl命令无法实现,例如在SIO_SET_QOS或 SIO_SET_GROUP_QOS中指定的流描述无法实现。
WSA_IO_PENDING 一个重叠操作被成功启动,过后将报告完成情况。
WSAEWOULDBLOCK 套接口标志为非阻塞,且所需操作将产生阻塞。

为什么SIO_RCVALL=0x98000001 ?是有根据的。

在winsock2.h中定义了以下宏:

define IOC_VOID 0x20000000 /* no parameters */
define IOC_OUT 0x40000000 /* copy out parameters */
define IOC_IN 0x80000000 /* copy in parameters */

define IOC_UNIX 0x00000000
define IOC_WS2 0x08000000
define IOC_PROTOCOL 0x10000000
define IOC_VENDOR 0x18000000

define _WSAIO(x,y) (IOC_VOID|(x)|(y))
define _WSAIOR(x,y) (IOC_OUT|(x)|(y))
define _WSAIOW(x,y) (IOC_IN|(x)|(y))
define _WSAIORW(x,y) (IOC_INOUT|(x)|(y))

里面没有SIO_RCVALL的定义,但是你可以查看msdn中的ms-help://MS.MSDNQTR.2003FEB.2052/winsock/winsock/wsaioctl_2.htm看WSAIoctl函数中的SIO_RCVALL 的说明,你可以知道它是这样定义的:
define SIO_RCVALL _WSAIOW(IOC_VENDOR,1)
即:
0x80000000|0x18000000|0x00000001=0x98000001
其中IOC_VENDOR 实际上是IOC_WS2|IOC_PROTOCOL ,因为要receive all IP packets on the network on win32 platform.


http://www.ppmy.cn/news/422064.html

相关文章

WSE(Web Services Enhancements)

WSE(Web Services Enhancements)是微软为了使开发者通过.NET创建出更强大,更好用的Web Services而推出功能增强插件。现在最新的版本是WSE2.0(SP2).本文描述了如何使用WSE2.0中的安全功能增强部分来实现安全的Web Services。WSE的安全功能增强实现的是WS-Security标…

Swaks

Swaks是由John Jetmore编写和维护的一种功能强大,灵活,可脚本化,面向事务的SMTP测试工具。可向任意目标发送任意内容的邮件。 关于名字 “swaks”这个名字是”SWiss Army Knife Smtp”的首字母缩略词. 发布网站http://www.jetmore.org/joh…

WS

主营业务:内容分发与加速、服务器托管与租用、面向运营商的网络优化解决方案 主要技术:智能负载均衡技术、自动路由技术、任务跟踪管理技术、流量管理技术、分布式海量文件存储技术、大批量文件快速分发技术 GSLB-Global Server Load Balance, 全局负载均…

webssh

vue djangolinux实现webssh 技术栈 xterm.js:做到vue的表现型 websocket: 做vue和django之间的通信 paramiko: 建立SSH连接通道 ssh: 与linux进行连接 threading:多条数据返回前端,io密集型,用…

wss配置

配置wss的前提是已经配通了ws,可以正常连接并发送数据,并且已经配置好ssl证书,网站可以通过https访问 那么问题来了,为啥子wss不行咧?咋配置wss咧?为啥要配置wss呢? 好咧,下面进行…

WSS

1. 下载安装wampserver 2. 下载wss程序包 3. 将wss程序包下的wss目录拷贝至wampserver安装目录/www/ 4. 修改httpd.conf : a. 修改Listen 端口号 b. 找到<Directory>项&#xff0c;注释#Deny from all, 增加Allow from all c. 启用mod_proxy_http.so //多个web服…

WSADATA

WSADATA 这个结构被用来存储 被WSAStartup函数调用后返回的 Windows Sockets数据。它包含Winsock.dll执行的数据。 结构原型&#xff1a;   struct WSAData { WORD wVersion; WORD wHighVersion; char szDescription[WSADESCRIPTION_LEN1]; char szSystemStatus[WSA…

wss和ws协议转换

项目场景&#xff1a; 一个im项目在测试准备上线的时候&#xff0c;发现微信小程序在正式阶段只支持wss协议 问题描述&#xff1a; 提示&#xff1a;发现微信小程序在正式阶段只支持wss协议&#xff0c;由于通信采用https&#xff0c;所以ws协议无法直接使用&#xff0c;测试…