Механизм общего назначения, работающий в Windows и UNIX, отсутствует. Под Windows вы хотите начать с GetIfTable()
. В большинстве систем UNIX попробуйте getifaddrs()
. Это даст вам различные вещи, такие как IP-адрес каждого интерфейса.
Я не уверен, как можно получить шлюз по умолчанию. Я предполагаю, что это доступно через некоторый вызов sysctl
. Возможно, вы захотите начать с источника для утилиты netstat .
Внешний публичный адрес - это то, что компьютер никогда не знает. Единственный способ - подключиться к чему-либо в Интернете, и он скажет вам, с какого адреса вы пришли. Это одна из классических проблем с IPNAT.