通信時のソースアドレスを取得する
※Linuxです。
なんて言えばよいのかわからなかったのですが、ip route get xxx.xxx.xxx.xxx
と打ったときに出てくる
ソース(送信元)アドレスをC/C++内で取得したかった。すぐに思いついた方法は、
popen
を使ってip route get
を実行し、標準出力を取得- 一時的にソケットを作って送信元IPアドレスを取得
です。以下のようなサンプルコードを書きました。
どちらも同じ出力が得られますが、手元の環境で試したところ、
1000回実行するのにかかる時間がpopen
を使った方法では約1秒、
ソケットを使った方法では約0.005秒だった。(コードの改善点はあるかもしれませんが。)
他にもっと良い方法があれば教えてください!