iocp中调用WSASendTo后发生的异常

C++语言 码拜 9年前 (2016-04-11) 1220次浏览
代码中写了一个A功能需要和下位机进行通信,通信模型是iocp。
这个功能接口A的操作过程是:首先向下位机发送一次数据,下位机就会回应一次。
单次调用时数据的发送与接收没有问题,但是当本人把这个接口放在一个循环里再调用时,循环大致200多次左右的时候,就会发生异常。
如下:xxx.exe 中的 0x00000010 处最可能的异常: 0xC0000005: Access violation
每次循环200多次调用后都是这样,程序发生异常后,调用堆栈里只显示了这个一行东西如下:
> 00000010()
单看这个异常应该是个非法访问,很有可能是指针相关的误操作,没有调用堆栈的提示,本人把程序中调用时执行大多数位置都写了调试信息,(例如使用指针之前,打印指针的值能否可用),然后发现是在WSASendTo调用完毕后就出现了异常,workthread的也有相关的发送信息,本人在想为什么200以前可以,后面就出现异常了?本人好纠结啊!
解决方案

20

调试,把循环降到200以下,确认是不是原因是循环问题

20

引用:

本人调用在WSASendto后,函数的返回-1,GetLastError()获取错误信息是10038,是无效的socket,但是本人在调试信息里打印出来socket的值是正常的啊!

无效就是无效了啊,你打印出来的值只不过是句柄号而已,可能close过你没置成invalid,或连接已经断掉了


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明iocp中调用WSASendTo后发生的异常
喜欢 (0)
[1034331897@qq.com]
分享 (0)