WSAGetLastError:10004 一个封锁操作被对 WSACancelBlockingCall的调用中断 的解决
今天在进行网络通信调试的时候遇到一个错误:10004 一个封锁操作被对 WSACancelBlockingCall的调用中断。
错误的发生情况如下:
Server:
1. 一个线程启动一个socket1 在监听,接收到到来的client连接.
2. 同时,启动一个socket2作为client,连接到另外一个MessageServer上,今天因为MessageServer没有启动,所以这个socket2连接失败,调用了closesocket( socket2),但是socket2没有被置成INVALID_SOCKET。
3. 来了一个client连接到socket1 上,接收到一个包,然后调用了socket2打算发送一个消息到MessageServer上,而且,发送函数里面没有判断socket2是否已经连接上,就直接调用了send,这个调用当然是失败,失败后调用了closesocket(socket2),这个调用后监听线程里面的accept函数开始出错了,错误就是“10004 一个封锁操作被对 WSACancelBlockingCall的调用中断”。
最后的解决和发现:
socket1 是在socket2后被创建的。
socket2创建后,数值是5580,第一次被closesocket(socket2)后,socket1 开始创建,这个5580被socket1 获得,socket1 的值是5580。
后面socket1 接收到一个连接后,到了上面的第三步骤的时候,发送数据失败后,再次调用了closesocket(socket2),这个时候实际上是调用了closesocket(5580),所以导致了accept操作开始失败,出现错误10004.
后记:
切记切记:调用了closesocket后,一定要把里面的socket即时赋值成INVALID_SOCKET,更重要的是, 不要对了一个socket进行多次的closesocket调用。
WSAGetLastError:10004 一个封锁操作被对 WSACancelBlockingCall的调用中断 的解决相关推荐
- [Socket网络编程]一个封锁操作被对 WSACancelBlockingCall 的调用中断。
原文地址:http://www.cnblogs.com/xiwang/archive/2012/10/25/2740114.html记录在此,方便查阅. C#中在使用UDPClient循环监听端口,在 ...
- 一个封锁操作被对 wsacancelblockingcall 的调用中断_操作系统概论
操作系统概述 OS基本概念 对用户和程序猿提供接口 命令接口 联机命令接口(交互式命令接口) 向计算机输入一条指令,它会先解析命令然后执行这条指令,完成后可在输入下一条指令.这种操作的好处在于人机交互 ...
- 一个封锁操作被对wsacancelblockingcall_跳票也传染?育碧看家游戏孤岛惊魂6彩虹六号 封锁宣布延迟发售...
近日本来是满怀期待的等待<赛博朋克2077>的发售的玩家们可能会有些失望了.在<赛博朋克2077>宣布将会跳票到12月份发售,但是显然玩家们还是不太买账的.先是<赛博朋克 ...
- 自己动手写一个能操作redis的客户端
作者:孤独烟 来自:http://rjzheng.cnblogs.com/ 引言 redis大家在项目中经常会使用到.官网也提供了多语言的客户端供大家操作redis,如下图所示 但是,大家有思考过,这 ...
- python 均值滤波_Python的一个骚操作
PS作为世界四大发明之一可以说被广大网友用到了极致,只有你想不到的没有我P不了的,任何正经的图片在都可以变成搞笑图片(比如下图)当然也可以用ps做一点正经的事情. 作为一个爱折腾的程序猿能用代码的解决 ...
- Boost:异步操作,涉及重新打包多个操作,但选择仅调用其中一个的测试程序
Boost:异步操作,涉及重新打包多个操作,但选择仅调用其中一个的测试程序 实现功能 C++实现代码 实现功能 boost::asio模块,异步操作,涉及重新打包多个操作,但选择仅调用其中一个的测试程 ...
- java 8 list,JAVA8 ListListInteger list中再装一个list转成一个list操作
我就废话不多说了,大家还是直接看代码吧~ List collect = IntStream.range(1, 10).boxed().collect(Collectors.toList()); Lis ...
- 华为系统里的计算机,一个屏幕操作两个系统 让你的手机装进华为MateBook 14电脑里...
2020春节一过全国掀起了一股在线办公.在线学习的热潮.笔者也由于特殊原因,无法回到工作室办公,只好用身边的华为MateBook 14 2020款居家远程办公. 也正是在这段日子,让笔者充分体会到华为 ...
- java怎样中断函数_Java中断一个线程操作示例
本文实例讲述了Java中断一个线程操作.分享给大家供大家参考,具体如下: 一 点睛 中断一个线程,意味着该线程在完成任务之前,停止它正在进行的一切当前的操作. 有三个比较常用的函数: interrup ...
最新文章
- oracle表没有数据判断,Oracle中判断有表DROP无表CREATE的存储过程
- Linux执行shell脚本的四种方式
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1107:校门外的树
- 推荐Chrome一款大气典雅神秘的主题 - 黑色系
- C语言 · 芯片测试
- 前端学习(1563):ng-if
- 华为C8825D刷机失败解决方法
- 详细解读windows无法ping通虚拟机的原因
- ILSpy For MacOsX
- Java多线程-马士兵高并发视频教程笔记
- php封装webservice_php实现webservice实例_PHP
- php教程phpmeng,李炎恢PHP培训视频教程
- 微信小程序:南大小百合客户端
- 车载BlueTooth通话机制原理及开发
- html打开txt文件 乱码怎么解决,记事本文件打开是乱码怎么办 乱码如何解决
- 键盘数字键上的符号记忆口诀
- 万亿级数据,如何高效进行数据治理
- 公司要我做报表,只会随机数据图表的我感到危机感,来试试Python读取csv
- IBM暑期实习笔试后总结
- 专题页面设计,怎么做更符合网站SEO?
热门文章
- 视频直播软件开发过程中需要解决的“老朋友”...
- XenApp/XenDesktop 7.11中对于视频、图片、文字的优化的说明
- array,vector对象 数组越界检测
- 专访东软杨纪文:深入业务做好移动安全防护
- netbeans使用小记
- 美团第一位前端工程师竟是转行程序员!关于他的10年技术生涯
- SQLer:无需编程语言即可将SQL查询转换为RESTful API的工具
- 解决xcode升级插件失效
- MySQL数据库的高可用方案总结
- 2程序员面试,这200行代码,结果工资相差了8000