
OSはLinuxで、コンパイラはgccです。
C言語でプログラムを作っていて、自分のIPアドレスとMACアドレスを取得しようと考えています。下のソースでIPアドレスは入手できたのですが、MACアドレスも取得しようとしたら、IPアドレスが上手く取得できなくなりました。ioctl(fd, SIOCGIFHWADDR, &ifr);で取得できるとおもうのですが、同時に取得しようとするとIPアドレスの表示が正しくされなくなっている状況です。
/* 自IPアドレスの取得 */
int fd;
struct ifreq ifr;
fd = socket(AF_INET, SOCK_STREAM, 0);
ifr.ifr_addr.sa_family = AF_INET;
/* eth0のIPアドレスの取得 */
strncpy(ifr.ifr_name, "eth0", IFNAMSIZ-1);
ioctl(fd, SIOCGIFADDR, &ifr);
/* MACアドレスの取得 */ ←上書きされている??
ioctl(fd, SIOCGIFHWADDR, &ifr);
close(fd);
どなかたご教授お願いいたします。
No.1ベストアンサー
- 回答日時:
/usr/include/linux/if.h にある struct ifreq の定義を良く見て貰えば分かると思いますが、ifr_ifru は union です。
で、その union の中に ifru_addr と ifru_hwaddr があり、これが ifr_name と ifr_hwaddr に #define で定義されています。つまり union なのでこれらは同じ領域を取ります。ということで、IPアドレスを取得後に自分で確保した struct sockaddr_in の変数に内容をコピーしておいてそれからMacアドレスを取得するか、または最初から strut ifreq ifr1, ifr2; のように2つ変数を作っておいて別々に取得すればいいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(コンピューター・テクノロジー) batファイルでPCの設定内容やプロパティーを取得したいのですが、コマンド1個で1ファイルとなるのを 2 2022/04/27 15:27
- 固定IP MACアドレスはLAN内で相手を特定するアドレスですか? PCから監視カメラを閲覧するときに、セグメ 3 2022/07/23 09:04
- ツイキャス ツイキャスでアカウントロックされたとき、IPアドレスが自動取得で変更されても、PC端末が特定される? 1 2022/10/15 15:49
- Windows 10 インストールしたてのVirtualBoxの仮想マシンにDHCPで割り振られるIPアドレスにつきまして 1 2023/05/03 14:46
- プロバイダー・ISP IPアドレス開示について 6 2023/05/31 09:33
- その他(インターネット接続・インフラ) アプリ利用者を特定し、裁判に 2 2022/06/09 21:43
- その他(インターネット接続・インフラ) モバイルデータ使用時のipアドレスについて 1 2022/06/07 20:55
- FTTH・光回線 グローバルIPアドレスの変更について 1 2022/04/23 05:32
- Visual Basic(VBA) VBA で エクスプロー操作 1 2023/05/31 16:13
- Wi-Fi・無線LAN 無線ルーターのIPアドレスは、iPhoneのように簡単に変更できる??? 2 2022/04/02 19:00
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPを使って、別サイトの一部を...
-
ps3で久しぶりにCDの音楽情報取...
-
「取得先」という表現について
-
Yahoo! JAPAN IDを新規取得でき...
-
DMMの動画を全件取得したのです...
-
VB.NETで他のアプリが完全に起...
-
各クライアントマシンのログイ...
-
ミュージックのアートワークを...
-
ローカルのコンピュータ名を取...
-
Excel VBA:特定の文字列以降(...
-
【C#】FindWindowExの使い方を...
-
PHPでhtmlソースを取得する方法
-
TreeViewのChild Node
-
COBOLの動的SQLについて
-
format関数について
-
(Win32)ファイルパスから物理ド...
-
【VBA】EXCELブックを開かずに...
-
連番のURLの一括スクレイピング
-
VBAでPDFファイルの文書のプロ...
-
IEを使わないでhtmlテキストを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「取得先」という表現について
-
EXCEL、マクロ-改ページ行番号...
-
Excel VBA:特定の文字列以降(...
-
Yahoo! JAPAN IDを新規取得でき...
-
ps3で久しぶりにCDの音楽情報取...
-
ミュージックのアートワークを...
-
format関数について
-
DMMの動画を全件取得したのです...
-
IPアドレスとMACアドレスを取得...
-
curlで取得出来るデータの制限...
-
VBAでPDFのアクティブページ番...
-
(Win32)ファイルパスから物理ド...
-
ローカルのコンピュータ名を取...
-
【C#】FindWindowExの使い方を...
-
【VBA】EXCELブックを開かずに...
-
VBS「開いているページ」のURL...
-
各クライアントマシンのログイ...
-
バッチファイルでPCのモデル名...
-
VBブラウザに表示されているテ...
-
アクセスの度にIPアドレスを変...
おすすめ情報