आपका आवेदन संभवतः विशिष्ट यूडीपी या टीसीपी पोर्ट नंबर या एक विशिष्ट आईपी-पते पर पैकेट भेज रहा है।
इसलिए आप उस ट्रैफ़िक को पकड़ने के लिए TCPdump जैसी किसी चीज़ का उपयोग कर सकते हैं।
TCPdump आपको आपकी इच्छा के अनुसार वास्तविक समय के आँकड़े नहीं देता है, लेकिन आप इसे कुछ ऐसा करने के लिए आउटपुट दे सकते हैं (मैं बाद में एक उत्तर के साथ इस उत्तर को अपडेट करने की कोशिश करूँगा)।
अपडेट करें:
$ sudo tcpdump -i eth1 -l -e -n | ./netbps
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
11:36:53 2143.33 Bps
11:37:03 1995.99 Bps
11:37:13 2008.35 Bps
11:37:23 1999.97 Bps
11:37:33 2083.32 Bps
131 packets captured
131 packets received by filter
0 packets dropped by kernel
मैंने एक मिनट बाद Ctrl + C दबाकर बाधित किया।
आपको tcpdump
कमांड के अंत में एक उपयुक्त फ़िल्टर एक्सप्रेशन जोड़ना होगा जिसमें केवल आपके ऐप द्वारा उत्पन्न ट्रैफ़िक शामिल हो (जैसे port 123
)
कार्यक्रम netbps
यह है:
#!/usr/bin/perl
use strict;
use warnings;
use Time::HiRes;
my $reporting_interval = 10.0; # seconds
my $bytes_this_interval = 0;
my $start_time = [Time::HiRes::gettimeofday()];
STDOUT->autoflush(1);
while (<>) {
if (/ length (\d+):/) {
$bytes_this_interval += $1;
my $elapsed_seconds = Time::HiRes::tv_interval($start_time);
if ($elapsed_seconds > $reporting_interval) {
my $bps = $bytes_this_interval / $elapsed_seconds;
printf "%02d:%02d:%02d %10.2f Bps\n", (localtime())[2,1,0],$bps;
$start_time = [Time::HiRes::gettimeofday()];
$bytes_this_interval = 0;
}
}
}
यह सिर्फ एक उदाहरण है, स्वाद के लिए समायोजित करें।