首页 技术 正文
技术 2022年11月14日
0 收藏 632 点赞 5,029 浏览 700 个字

在使用WSAEventSelect的套接字模型中,遇到了WSAEventSelect返回10038的错误,在定位解决的过程中,简单记录一些定位解决的手段摘要。

使用windows的错误帮助信息,使用命令“net helpmsd 10038”,获取10038错误码对应的具体错误信息。

Windows Socket网络编程-2016.01.07

通过单步调试,发现WSAEventSelect中第一个参数SOCKET描述符值为0,所以WSAEventSelect函数调用发送10038错误。

具体原因在如下的判断和赋值操作中,没有将赋值过程使用括号,因为等于条件比较优先级高于赋值运算,导致accept获取到的SOCKET描述符值总是为0。

SOCKET acceptSck;
if((acceptSck = accept(socketArray[event - WSA_WAIT_EVENT_0]->sckt, NULL, NULL)) == INVALID_SOCKET)
{
printf("accept failed with error %d\n", WSAGetLastError());
return FALSE;
}

在windows下,获取标准输入,输出,错误的文件描述符编号:

printf("stdin fileno [%d], stdout fileno [%d], stderr fileno [%d]\n", fileno(stdin), fileno(stdout), fileno(stderr));

Windows Socket网络编程-2016.01.07

可以看出标准输入文件描述符为为0,标准输出为1,错误输出为2。但新创建的SOCKET描述符并不遵循使用未使用的描述符的最小值的规律,而是随机分配的一个整数值,具体的分配规律有待探究,若有熟悉朋友亦可帮忙解答。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,026
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,517
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,364
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,145
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,779
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,856