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 ([email protected])

时间: 2024-10-09 16:43:51

UDP的阻塞式监听不触发问题的相关文章

C语言非阻塞式键盘监听

监听键盘可以使用C语言的字符输入函数,例如 getchar.getch.getche 等,我们会在<结合缓冲区谈谈C语言getchar().getche().getch()的区别>一节中重点讲解它们的区别. 使用getche函数监听键盘的例子: #include <stdio.h> #include <conio.h> int main(){ char ch; int i = 0; //循环监听,直到按Esc键退出 while(ch = getch()){ if(ch

udp服务器监听(多线程)

项目一:udp1111 监听的有三个文件分别为: guiHello.java 有关界面和事件响应功能 UdpFunc.java是udp类的封装:发送和接收 udpServer.java是入口函数,无实际意义 代码: import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.Scanner; import javax.swing.*; import javax.swing.border.Border

Redis集群环境下的键值空间监听事件实现方案

一直想记录工作中遇到的问题和解决的方法,奈何没有找到一方乐土,最近经常反思,是否需要记录平时的点滴,后台还是决定下定决心记录一些,以便以后用到的时候找不着,实现这样的一个功能主要也是业务所需要的. 需求:要求统计所有会员在线人数,并根据会员在线状态同步改变人数. 之前用户登录使用session去控制,那么可以通过session进行在线用户人数统计,后来实现无状态不在依赖session作为用户在线的标准,使用Redis替换了Session,那么用户直接退出也好做,但是会存在用户直接关闭页面的情况,

非专业码农 JAVA学习笔记 用户图形界面设计与实现-所有控件的监听事件

用户图形界面设计与实现-监听事件 System.applet.Applet (一)用户自定义成分 1.绘制图形 Public voit piant(Ghraphics g){  g.drawLine等图形名称(坐标1234);g.file图形名(坐标123)} 2.设置字体-Font类 (1)定义font:Font myfont=new Font(“字体”,”样式”,字号); 例如:Font myfont=new Font(“宋体”,Font.BOLD,12); (2)引用定义的Font:类/容

socket + pcntl_fork 实现客户端请求,服务器实时监听返回处理 消息推送

<?php /* socket链接整个过程 1,socket_create 第一个参数指定应用程序使用的通信协议的协议族,对于TCP/IP协议族,该参数置AF_INET: 第二个参数指定要创建的套接字类型,流套接字类型为SOCK_STREAM.数据报套接字类型为SOCK_DGRAM.原始套接字SOCK_RAW(WinSock接口并不适用某种特定的协议去封装它,而是由程序自行处理数据包以及协议首部): 第三个参数指定应用程序所使用的通信协议.此参数可以指定单个协议系列中的不同传输协议.在Inter

js事件监听

通过添加事件监听进一步实现业务处理.可以对同一个元素添加相同的事件监听,执行会从上到下的原则,也可以添加多个事件监听针对同一元素. 针对元素监听: document.getElementById("idName").addEventListener("eventType",functionName);//注意:前面不加on 如click事件 针对window对象监听: window.addEventListener(“resize”,function(){ aler

Zookeeper之Watcher监听事件丢失分析

在上篇博客中,介绍了zookeeper客户Curator对监听事件的封装及应用--<Zookeeper开源客户端Curator之事件监听详解>在讲解部分代码实例的运行结果时我们已经注意到,并不是所有的监听事件都会发送到客户端.比如连续更改一个节点的内容.创建节点再马上删除节点.本篇博客就讨论一下zookeeper监听事件丢失的原因及使用时的注意事项. 案例 package com.secbro.learn.curator; import org.apache.curator.RetryPoli

spring事件监听机制

事件机制的主要成员: 事件 事件监听器(监听事件触发,处理一些事情) 事件源(发布事件) javaSE 提供了一系列自定义事件的标准. EvenObject,为javaSE提供的事件类型基类,任何自定义事件都必须继承它. EventListener,为javaSE提供的事件监听器基类,任何自定义事件监听器都得实现. javaSE未提供事件发布者,由各个应用程序自行实现事件发布者这一角色. spring提供了ApplicationEventPublisher接口作为事件发布者,并且Applicat

SpringBoot | 第三十二章:事件的发布和监听

前言 今天去官网查看spring boot资料时,在特性中看见了系统的事件及监听章节.想想,spring的事件应该是在3.x版本就发布的功能了,并越来越完善,其为bean和bean之间的消息通信提供了支持.比如,我们可以在用户注册成功后,发送一份注册成功的邮件至用户邮箱或者发送短信.使用事件其实最大作用,应该还是为了业务解耦,毕竟用户注册成功后,注册服务的事情就做完了,只需要发布一个用户注册成功的事件,让其他监听了此事件的业务系统去做剩下的事件就好了.对于事件发布者而言,不需要关心谁监听了该事件