【问题标题】:Pinging a server in C用 C ping 一个服务器
【发布时间】:2018-02-15 11:12:14
【问题描述】:

我有一段 ping 服务器的代码:

int main(){
    if ( system( "ping 111.222.333.44") == 0 )
        printf("success");
    return 0;
}

代码打印如下:

PING 111.222.333.44 (111.222.333.44) 56(84) bytes of data.
64 bytes from 111.222.333.44: icmp_seq=1 ttl=63 time=0.565 ms
64 bytes from 111.222.333.44: icmp_seq=2 ttl=63 time=0.874 ms
.
.

等等。由于从未打印过success,因此我假设system( "ping 111.222.333.44") 以某种方式进入了无限循环。当我点击Ctrl+C 时,将打印统计信息(min/avg/max/mdev 等)并且程序终止。有没有办法避免这种无限循环?

另外,发送到服务器的字节数是 56 还是 84?还是64?我们可以手动指定这个值吗?如果我要计算过程中的速度,我会做56 bytes / 0.565ms = 99.1 KB/s吗?提前致谢。

【问题讨论】:

  • ping 将继续运行,无需配置 - 使用 -c NUM 标志,其中 num 是要发送的数据包数

标签: c networking ping


【解决方案1】:

简而言之,ping 可以通过多种不同方式进行配置。 -c 4可以指定发送4个ping包,-s XX可以指定包大小。

【讨论】:

    猜你喜欢
    • 2016-03-02
    • 2011-05-12
    • 2021-02-07
    • 2018-09-15
    • 2019-07-18
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 2013-11-10
    相关资源
    最近更新 更多