使用C++,我想使用命令/类来获取ping主机以在我的程序中使用的延迟时间.我尝试使用ping命令,但由于其中包含其他统计信息,因此没有简单的方法来收集时间.我希望有一个更简单的方法.
该平的工具通常是用C语言实现,并通过发送工作ICMP 回显请求通过分组原始套接字.系统时间被记录 - 通常在posix下的gettimeofday开启- 当发出Echo请求时,并且当收到Echo应答(如果有)以确定往返时间时再次记录系统时间.您可以使用套接字在C++应用程序中添加相同的功能.
否则,从ping系统调用中提取信息可能比您想象的更容易.关键是打开管道以允许读取ping命令的标准输出(请参阅popen
或_popen
).甲正则表达式(例如,"时间=([0-9]*)")可用于挖出所需的数据.如果您没有可用的正则表达式库,那么提取此数据只需要相当简单的字符串操作.该STL string类提供了几种算法,可能是使用的.