今天在进行网络通信调试的时候遇到一个错误: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的调用中断 的解决相关推荐

  1. [Socket网络编程]一个封锁操作被对 WSACancelBlockingCall 的调用中断。

    原文地址:http://www.cnblogs.com/xiwang/archive/2012/10/25/2740114.html记录在此,方便查阅. C#中在使用UDPClient循环监听端口,在 ...

  2. 一个封锁操作被对 wsacancelblockingcall 的调用中断_操作系统概论

    操作系统概述 OS基本概念 对用户和程序猿提供接口 命令接口 联机命令接口(交互式命令接口) 向计算机输入一条指令,它会先解析命令然后执行这条指令,完成后可在输入下一条指令.这种操作的好处在于人机交互 ...

  3. 一个封锁操作被对wsacancelblockingcall_跳票也传染?育碧看家游戏孤岛惊魂6彩虹六号 封锁宣布延迟发售...

    近日本来是满怀期待的等待<赛博朋克2077>的发售的玩家们可能会有些失望了.在<赛博朋克2077>宣布将会跳票到12月份发售,但是显然玩家们还是不太买账的.先是<赛博朋克 ...

  4. 自己动手写一个能操作redis的客户端

    作者:孤独烟 来自:http://rjzheng.cnblogs.com/ 引言 redis大家在项目中经常会使用到.官网也提供了多语言的客户端供大家操作redis,如下图所示 但是,大家有思考过,这 ...

  5. python 均值滤波_Python的一个骚操作

    PS作为世界四大发明之一可以说被广大网友用到了极致,只有你想不到的没有我P不了的,任何正经的图片在都可以变成搞笑图片(比如下图)当然也可以用ps做一点正经的事情. 作为一个爱折腾的程序猿能用代码的解决 ...

  6. Boost:异步操作,涉及重新打包多个操作,但选择仅调用其中一个的测试程序

    Boost:异步操作,涉及重新打包多个操作,但选择仅调用其中一个的测试程序 实现功能 C++实现代码 实现功能 boost::asio模块,异步操作,涉及重新打包多个操作,但选择仅调用其中一个的测试程 ...

  7. java 8 list,JAVA8 ListListInteger list中再装一个list转成一个list操作

    我就废话不多说了,大家还是直接看代码吧~ List collect = IntStream.range(1, 10).boxed().collect(Collectors.toList()); Lis ...

  8. 华为系统里的计算机,一个屏幕操作两个系统 让你的手机装进华为MateBook 14电脑里...

    2020春节一过全国掀起了一股在线办公.在线学习的热潮.笔者也由于特殊原因,无法回到工作室办公,只好用身边的华为MateBook 14 2020款居家远程办公. 也正是在这段日子,让笔者充分体会到华为 ...

  9. java怎样中断函数_Java中断一个线程操作示例

    本文实例讲述了Java中断一个线程操作.分享给大家供大家参考,具体如下: 一 点睛 中断一个线程,意味着该线程在完成任务之前,停止它正在进行的一切当前的操作. 有三个比较常用的函数: interrup ...

最新文章

  1. oracle表没有数据判断,Oracle中判断有表DROP无表CREATE的存储过程
  2. Linux执行shell脚本的四种方式
  3. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1107:校门外的树
  4. 推荐Chrome一款大气典雅神秘的主题 - 黑色系
  5. C语言 · 芯片测试
  6. 前端学习(1563):ng-if
  7. 华为C8825D刷机失败解决方法
  8. 详细解读windows无法ping通虚拟机的原因
  9. ILSpy For MacOsX
  10. Java多线程-马士兵高并发视频教程笔记
  11. php封装webservice_php实现webservice实例_PHP
  12. php教程phpmeng,李炎恢PHP培训视频教程
  13. 微信小程序:南大小百合客户端
  14. 车载BlueTooth通话机制原理及开发
  15. html打开txt文件 乱码怎么解决,记事本文件打开是乱码怎么办 乱码如何解决
  16. 键盘数字键上的符号记忆口诀
  17. 万亿级数据,如何高效进行数据治理
  18. 公司要我做报表,只会随机数据图表的我感到危机感,来试试Python读取csv
  19. IBM暑期实习笔试后总结
  20. 专题页面设计,怎么做更符合网站SEO?

热门文章

  1. 视频直播软件开发过程中需要解决的“老朋友”...
  2. XenApp/XenDesktop 7.11中对于视频、图片、文字的优化的说明
  3. array,vector对象 数组越界检测
  4. 专访东软杨纪文:深入业务做好移动安全防护
  5. netbeans使用小记
  6. 美团第一位前端工程师竟是转行程序员!关于他的10年技术生涯
  7. SQLer:无需编程语言即可将SQL查询转换为RESTful API的工具
  8. 解决xcode升级插件失效
  9. MySQL数据库的高可用方案总结
  10. 2程序员面试,这200行代码,结果工资相差了8000