问题标签 [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.

0 投票
2 回答
963 浏览

c# - 使用 Visual c# .net 进行 Icmp 监控

我想编写一个监控我的一些远程分支的应用程序。我想监控两件事

1) icmp 丢弃(如果我发送 10 个 ping 并且 2 个或更多被丢弃,则发出警报) 2) 如果 ping 的延迟超过 20 毫秒,则发出警报。

我刚刚定义了粗略的阈值。可以用 Visual c# 完成吗,基本上我正在学习 c# 并为我的办公室做一些事情,这样我的学习就朝着正确的方向发展。如果你们能指出我正确的方向,我将不胜感激。我在 .net 中看到过 ping 类(我的意思是在 google 上),但我认为它只能说明 IP 是否启动。

请指导我

0 投票
1 回答
1503 浏览

c - 在选择中响应 ICMP

我感兴趣的基本代码序列是(伪代码)

自 Win2000 起,ICMP 数据包在将 UDP 数据报发送到无法访问的端口后被发送回,触发 select,之后 recvfrom 失败并显示 WSAECONNRESET。这种行为对我来说是不可取的,因为在这种情况下我希望 select 以超时结束(没有要读取的数据)。在 Windows 上,这可以通过 WSAIoctl SIO_UDP_CONNRESET ( http://support.microsoft.com/kb/263823 ) 解决。

我的问题是:

  1. SIO_UDP_CONNRESET 在这种情况下是最好的方法吗?
  2. 是否有其他方法可以忽略“选择”的 ICMP 或将其过滤为 recvfrom(也许,忽略 Windows 上的 WSAECONNRESET 错误将其视为超时,是否可以在其他情况下触发此错误)?
  3. Linux 和 Unix(Solaris、OpenBSD)上是否有类似的问题?
0 投票
2 回答
3295 浏览

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' 为什么会发生这种情况???

注意:我没有输入整个代码,但我认为我的语法、解析、标题组合等是正确的。我的代码中有明显的问题吗?如有必要,我将上传整个代码。

谢谢

0 投票
1 回答
678 浏览

c++ - 回复 Ping 广播

我正在用 .NET c++ 编写程序。我正在本地网络上发送广播 ping。我所有的目标设备都能够响应 ping 广播,而且我确实在 Wireshark 中跟踪了它们的所有响应。我的目标是检索所有响应站的 IP 地址。

问题是,Microsoft 的 API 不支持记录给定时间间隔内的所有回复。像 IcmpSendEcho 这样的函数只会在第一次回复时返回(尽管 API 声明它可以记录多个 icmp 回复),这是一个已知问题,之后在这里谷歌搜索和搜索,每个人都报告了这些功能的相同问题。

我可以做些什么来实现我的目标而不会太低级以获取回复?Windows 是否保存某种 icmp 历史记录?我将不胜感激任何建议!

0 投票
1 回答
1010 浏览

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' 未声明(在此函数中首次使用)

我错过了什么?

0 投票
2 回答
3751 浏览

java - Ping ICMP 回显请求

是否有任何方法可以 ping icmp(回显请求)而不是使用 isReachable?isReachable 在端口 7 上建立 TCP 连接,当我使用wireshark 时,我在 Windows 上没有看到任何 ICMP 数据包,在 Linux 上没有看到 ICMP 类型 3(不是类型 8 和 0)。因此,如果有人有建议或解决方案,请告诉我。非常感谢!

0 投票
1 回答
6788 浏览

java - 如何检查主机是否无法访问?

我正在尝试获取 ping 主机的无法访问状态,因为我分别获得了 up 和 down 的 (0,1) 值,我将如何获得任何条件“2”来告诉我无法访问 ping 主机?

我的代码,

什么是主动和被动状态?我怎样才能检查它?


编辑:请参阅此链接第 26 页 http://nagios.sourceforge.net/docs/ndoutils/NDOUtils_DB_Model.pdf

stat 列说明。我想得到这个结果,因为我已经发布了我的代码,那么我将如何获得该列“状态”?请记住,我正在为“n”个主机使用循环。

0 投票
2 回答
1934 浏览

c# - C#原始套接字接收数据包

目前正在尝试实现一个简单的 ping 程序来自学 C# 和 .NET 中的网络编程。

我设法初始化了一个原始套接字并正确构建了一个 ICMP 回显请求数据包。运行我的程序时,Wireshark 确认我正在向所需目的地发送 Echo 请求,但是远程机器永远不会发回 echo 回复。我尝试向多台机器发送相同的结果(并且这些机器中的每台都可以使用 Windows ping 实用程序进行 ping)。我的代码是这样的:

如果有人能提出远程机器不发送任何回复的任何原因,我将不胜感激。

0 投票
1 回答
866 浏览

c# - ICMP 套接字总是超时

我正在尝试用 C# 向我的路由器发送 ICMP AddressMask 请求。但是,我的套接字总是超时,或者,如果未设置超时,会使应用程序无限循环。这是代码:

我知道许多类型的路由器不会响应地址掩码请求,但我什至尝试了一个简单的 Echo-Request,结果是一样的。

0 投票
1 回答
3171 浏览

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)

它有点混乱(由于打印不能很好地与线程一起工作),所以这里更清楚一点:

我的问题:

  1. 任何人都可以重新创建这个吗?

  2. ping 应该是这样的行为吗?我假设不是。

  3. 是否存在不具有此行为的 Python 的现有 ICMP ping?
    或者,您能想出一个简单的解决方法——即轮询receive_one_ping直到我们的目的地与我们的接收地址匹配?

编辑:我在python-ping github 页面上创建了一个问题