ソケットに結び付けられたアドレスを取得する

f:id:dfukunaga:20170412233423p:plain

Linuxです。

netstatしたときのLocal AddressとForeign AddressにあたるものをC/C++で取得したかった。 Local Addressはgetsockname()、Foreign Addressはgetpeername()を使えば取得できるらしい。 C++でサンプルを書くと以下のような感じ。

gist6c0628fe0ad9790fe7a1fbc5cba9b13c

vagrant@vagrant-ubuntu-trusty-64:~$ ./a.out 192.168.0.2 2551
Local Address:   192.168.0.1:46402
Foreign Address: 192.168.0.2:2551

ちゃんと取得できてますね!(↑のサンプルコードを使うときは対応するアドレスをlistenしてください)