私は C の初心者で、興味深い問題で立ち往生しています。
ポート 80 ですべての送信パケットをキャッチしており、IP ごとの転送速度を計算したいと考えています。しかし、問題は、これらの IP アドレスをグループ化する方法がわからないことです。PHP では、配列を作成し、IP によってエントリにインデックスを付けて配列を検索し、IP インデックスが既に存在する場合は、転送された値のバイトを更新し、それを経過秒数で割ります。転送速度は B/s です。しかし、CIではこれができません。
全体的な転送速度しか計算できないため、問題を解決する方法を教えてください。
t2 = time(0);
time_elapsed = (int) (t2-t1);
if(time_elapsed > 0) {
bytes += Size;
//packets size SUM from all IP addresses, which is incorrect
printf("IP: %s | Size: %d\n\n", inet_ntoa(dest.sin_addr), Size);
}
出力
IP: 77.236.192.100 | Size: 4434
IP: 89.176.81.106 | Size: 43854
IP: 89.176.81.106 | Size: 20494
IP: 89.176.81.106 | Size: 24874
IP: 77.236.192.100 | Size: 7354
IP: 89.176.81.106 | Size: 39474
IP: 89.176.81.106 | Size: 16114