重叠ioWSARecv函数10014错误

这几天心血来潮想自己再动手写写各个网络io模型,以前只是写过简单的demo,实际工作中也没用过,基本忘的也差不多了,现在想重新写一下,没想到还是有收获的,这里记录其中一点。


今天写到重叠io-完成例程模型,WSARecv函数一直返回10014错误,错误码解释是:
Bad address.
The system detected an invalid pointer address in attempting to use a pointer argument of a call. This error occurs if an application passes an invalid pointer value, or if the length of the buffer is too small. For instance, if the length of an argument, which is a sockaddr structure, is smaller than the sizeof(sockaddr).
记得以前写demo的时候遇到过这个错误是因为flag参数直接传了0,而不是传了地址,不过这次这个参数我的确是传了正确的地址,而且每个需要传地址的参数都跟了一下,看起来都是正常的地址值,折腾了好久也没有找到原因。


后来只能从头来回忆是怎么一步一步写的这部分代码,才突然想起来WSAOVERLAPPED的尾随数据中,原来保存操作类型的成员是直接定义成Integer,而刚才我把它改成了枚举TOperationType = (opRecv, opSend),然后就试着又改成Integer,果然没有10014错误了,搞到这里就更纳闷了,这两种写法唯一不同的就是这个字段的长度,一个是4字节,一个是一字节&#
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值