UDP的阻塞式监听不触发问题

排查故障
通讯失败,观察通讯日志发现发送但未接收.查看Wireshark监控,发送与响应均有记录,因此发送模块没有问题.问题在于监听部分.

360阻塞监听

在一台新电脑上安装了程序,但发现开启程序后Listener(UdpClient)在执行Receive(ref IPEndPoint)时被强制停止.

并出现listener被释放时出现的错误:"一个封锁操作被对 WSACancelBlockingCall 的调用中断".
考虑到之前360存在影响程序通讯的情况,把360关闭后执行,同样存在问题.卸载360后监听成功启动并阻塞等待.

Win防火墙阻挡接收
在解决了360阻塞监听后,仍然未收到数据,开启WireShark监控并在监听启动处设置断点.发现通讯WireShark中首发正常,但监听阻塞未触发.
试通过两种本地通讯软件与硬件通讯,一个成功一个失败,成功的程序可能是C++程序,而失败程序同样是C#+.net.
之后使用失败的工具与软件进行通讯,测试成功.
.net的Udp方式在PC内外通讯时被阻塞,而在PC内通讯成功.此时想到Win防火墙.关闭后成功触发.

相关经验
在解决问题过程中咨询了群里的朋友,找到一些很好的排查方法及之前收集的方法:
- cmd中输入netstat - ano可以查看本地所有使用中的IP及端口状态.
- UDP协议中.如果收到未开放监听的端口.则在wireshark中看到收到的包不再是UDP类型,而是ICMP类型.

--- Lan (sunlyk@QQ.com)

转载于:https://www.cnblogs.com/sunlyk/p/7427425.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值