在C++中从主机获取延迟

Vic*_*tor 2 c++ latency ping

使用C++,我想使用命令/类来获取ping主机以在我的程序中使用的延迟时间.我尝试使用ping命令,但由于其中包含其他统计信息,因此没有简单的方法来收集时间.我希望有一个更简单的方法.

Jud*_*den 7

的工具通常是用C语言实现,并通过发送工作ICMP 回显请求通过分组原始套接字.系统时间被记录 - 通常在posix下的gettimeofday开启- 当发出Echo请求时,并且当收到Echo应答(如果有)以确定往返时间时再次记录系统时间.您可以使用套接字在C++应用程序中添加相同的功能.

否则,从ping系统调用中提取信息可能比您想象的更容易.关键是打开管道以允许读取ping命令的标准输出(请参阅popen_popen).甲正则表达式(例如,"时间=([0-9]*)")可用于挖出所需的数据.如果您没有可用的正则表达式库,那么提取此数据只需要相当简单的字符串操作.该STL string类提供了几种算法,可能是使用的.

  • 原始套接字需要“root”或“管理员”权限。在 UNIX 上,ping 程序是 suid,因此您可以以普通用户身份运行它,但除非您的程序以 root 身份运行,否则您无法编写自己的版本。这对您来说可能是也可能不是问题。RE 方法可能更好。 (2认同)