问题标签 [icmp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 使用 Visual c# .net 进行 Icmp 监控
我想编写一个监控我的一些远程分支的应用程序。我想监控两件事
1) icmp 丢弃(如果我发送 10 个 ping 并且 2 个或更多被丢弃,则发出警报) 2) 如果 ping 的延迟超过 20 毫秒,则发出警报。
我刚刚定义了粗略的阈值。可以用 Visual c# 完成吗,基本上我正在学习 c# 并为我的办公室做一些事情,这样我的学习就朝着正确的方向发展。如果你们能指出我正确的方向,我将不胜感激。我在 .net 中看到过 ping 类(我的意思是在 google 上),但我认为它只能说明 IP 是否启动。
请指导我
c - 在选择中响应 ICMP
我感兴趣的基本代码序列是(伪代码)
自 Win2000 起,ICMP 数据包在将 UDP 数据报发送到无法访问的端口后被发送回,触发 select,之后 recvfrom 失败并显示 WSAECONNRESET。这种行为对我来说是不可取的,因为在这种情况下我希望 select 以超时结束(没有要读取的数据)。在 Windows 上,这可以通过 WSAIoctl SIO_UDP_CONNRESET ( http://support.microsoft.com/kb/263823 ) 解决。
我的问题是:
- SIO_UDP_CONNRESET 在这种情况下是最好的方法吗?
- 是否有其他方法可以忽略“选择”的 ICMP 或将其过滤为 recvfrom(也许,忽略 Windows 上的 WSAECONNRESET 错误将其视为超时,是否可以在其他情况下触发此错误)?
- Linux 和 Unix(Solaris、OpenBSD)上是否有类似的问题?
python - python icmp 原始套接字实现
我对python比较陌生,所以请体谅...
我正在通过 raw_sockets 实现服务器和客户端。我有必要的特权。
现在,我这样定义的服务器:
Q1)为什么我不能简单地输入:hosts = 'localhost'。如果我这样做,它不允许我写这行:sockSer.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)。然后服务器没有收到我客户的消息。只有当做 gethostbyname(socket.gethostname()) 我得到 192.168.1.101 然后它工作。
在不同的类中:客户端套接字:
Q2)我还需要输入:sockCli.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON) 还是 sockCli.connect(address)?似乎它在没有连接命令的情况下工作。对于客户端套接字?
现在,当我执行以下操作时出现问题:1)从客户端向服务器发送数据包:
2)在服务器中接收数据包并将某些内容发送回客户端:
现在,我的重要问题是: Q3)服务器仅向客户端发送了 1 个数据包,有效负载为“b”。发生的情况是,我的客户端实际上在 while 循环中接收到 2 个数据包:第一个数据包是客户端自己发送到服务器的数据包,另一个数据包是客户端从服务器获得的数据包。因此我的输出是 'ab' 而不是简单的 'b' 为什么会发生这种情况???
注意:我没有输入整个代码,但我认为我的语法、解析、标题组合等是正确的。我的代码中有明显的问题吗?如有必要,我将上传整个代码。
谢谢
c++ - 回复 Ping 广播
我正在用 .NET c++ 编写程序。我正在本地网络上发送广播 ping。我所有的目标设备都能够响应 ping 广播,而且我确实在 Wireshark 中跟踪了它们的所有响应。我的目标是检索所有响应站的 IP 地址。
问题是,Microsoft 的 API 不支持记录给定时间间隔内的所有回复。像 IcmpSendEcho 这样的函数只会在第一次回复时返回(尽管 API 声明它可以记录多个 icmp 回复),这是一个已知问题,之后在这里谷歌搜索和搜索,每个人都报告了这些功能的相同问题。
我可以做些什么来实现我的目标而不会太低级以获取回复?Windows 是否保存某种 icmp 历史记录?我将不胜感激任何建议!
c - mac网络ping源码编译报错
我从 Apple 下载 Mac OS 网络 ping 源代码:http ://www.opensource.apple.com/tarballs/network_cmds/network_cmds-356.8.tar.gz
并在 xcode 中编译它,但在 10.7 和 10.6 中都出现错误,
'IP_NO_IFT_CELLULAR' 未声明(在此函数中首次使用)
'SO_TRAFFIC_CLASS' 未声明(在此函数中首次使用)
'SO_RECV_TRAFFIC_CLASS' 未声明(在此函数中首次使用)
'SO_TRAFFIC_CLASS' 未声明(在此函数中首次使用)
我错过了什么?
java - Ping ICMP 回显请求
是否有任何方法可以 ping icmp(回显请求)而不是使用 isReachable?isReachable 在端口 7 上建立 TCP 连接,当我使用wireshark 时,我在 Windows 上没有看到任何 ICMP 数据包,在 Linux 上没有看到 ICMP 类型 3(不是类型 8 和 0)。因此,如果有人有建议或解决方案,请告诉我。非常感谢!
java - 如何检查主机是否无法访问?
我正在尝试获取 ping 主机的无法访问状态,因为我分别获得了 up 和 down 的 (0,1) 值,我将如何获得任何条件“2”来告诉我无法访问 ping 主机?
我的代码,
什么是主动和被动状态?我怎样才能检查它?
编辑:请参阅此链接第 26 页 http://nagios.sourceforge.net/docs/ndoutils/NDOUtils_DB_Model.pdf
stat 列说明。我想得到这个结果,因为我已经发布了我的代码,那么我将如何获得该列“状态”?请记住,我正在为“n”个主机使用循环。
c# - C#原始套接字接收数据包
目前正在尝试实现一个简单的 ping 程序来自学 C# 和 .NET 中的网络编程。
我设法初始化了一个原始套接字并正确构建了一个 ICMP 回显请求数据包。运行我的程序时,Wireshark 确认我正在向所需目的地发送 Echo 请求,但是远程机器永远不会发回 echo 回复。我尝试向多台机器发送相同的结果(并且这些机器中的每台都可以使用 Windows ping 实用程序进行 ping)。我的代码是这样的:
如果有人能提出远程机器不发送任何回复的任何原因,我将不胜感激。
c# - ICMP 套接字总是超时
我正在尝试用 C# 向我的路由器发送 ICMP AddressMask 请求。但是,我的套接字总是超时,或者,如果未设置超时,会使应用程序无限循环。这是代码:
我知道许多类型的路由器不会响应地址掩码请求,但我什至尝试了一个简单的 Echo-Request,结果是一样的。
python - 从线程ping多个ip时的Python ICMP ping实现?
我一直在 Windows 上使用jedie 的 pythonping
实现。我可能是错的,但是当从单独的线程 ping 两台计算机(A 和 B)时,ping 将返回它收到的第一个 ping,无论来源如何。
由于这可能是 jedie 的叉子的问题,我恢复到以前的版本。(这是我将在下面探索的版本)
我在一行代码中添加了receive_one_ping
:(第 134 行或类似的)
这使我们能够看到我们收到的 ping 的地址。(应该和目的IP一样吧?)
测试:
ping1() ping 一个已知的离线 IP (1.2.3.4),
ping2() ping 一个已知的在线 IP (192.168.1.1 - 我的路由器)
现在,如果我们一起做:(为简单起见,使用 Timer)
它有点混乱(由于打印不能很好地与线程一起工作),所以这里更清楚一点:
我的问题:
任何人都可以重新创建这个吗?
ping 应该是这样的行为吗?我假设不是。
是否存在不具有此行为的 Python 的现有 ICMP ping?
或者,您能想出一个简单的解决方法——即轮询receive_one_ping
直到我们的目的地与我们的接收地址匹配?