2009-03-09 8 views
2

Objective-Cで送受信されるネットワークトラフィックを取得する最も簡単な方法は何ですか?送受信されたネットワークトラフィックバイトを読み取って

+0

あなたが得る構造がnetinetの/ ip_var.hで定義されていますか? –

+0

システム全体、特定のネットワークソース(無線、イーサネット、これらのことを私が最初に疑問に思っている使用法をチェックしなければならないこと)に出入りする全てについて。 – Antro

+0

@Antro、あなたはパケットスキャンのためにrootアクセスが必要です。 tcpdumpなどのプログラムを使うべきです。 – dreamlax

答えて

3

それは簡単ではありません、それはCからのObjective-Cではないのですが、あなたが必要とするすべての情報は、インターフェイスアドレスのifa_dataフィールドに格納されているがgetifaddrs(3)によってあなたに戻りました。​​のlibtop_p_networks_sample関数の 'top'ユーティリティにアクセスする方法の例を見ることができます。

1

おそらく、クリヤスト溶液は、クロストリジウム・セレビノサ(cdespinosa's)である。

交互にかもしれ

1/NSTask

diciu$ netstat -bi en0 
Name Mtu Network  Address   Ipkts Ierrs  Ibytes Opkts Oerrs  Obytes Coll 
en0 1500 <Link#4> xx:xx:xx:xx:xx 86259  0 86175096 64485  0 10090152  0 

2/sysctlのはvarsの読み込みはあなたにいくつかのネットワークの統計情報を取得しますが、これらは特定のインターフェイスに縛られていないように見えるの内側には、netstatの呼び出しをラップ:

diciu$ sysctl -b net.inet.ip.stats > /tmp/tt 
diciu$ hexdump /tmp/tt 
0000000 d2 4a 01 00 00 00 00 00 00 00 00 00 00 00 00 00 
0000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

ダンプ「d2 4a 01 00」は、合計のipパケット(つまり、0x14ad2 = 84690パケット)です。システム全体でまたはちょうどあなたのアプリ用

struct ipstat { 
     u_int32_t  ips_total;    /* total packets received */ 
[..] 
関連する問題