Вы можете получить эту информацию, позвонив по номеру getifaddrs . (Я использую эту функцию в своем приложении, чтобы выяснить IP-адрес iPhone.)
struct ifaddrs *ifa = NULL, *ifList;
getifaddrs(&ifList); // should check for errors
for (ifa = ifList; ifa != NULL; ifa = ifa->ifa_next) {
ifa->ifa_addr // interface address
ifa->ifa_netmask // subnet mask
ifa->ifa_dstaddr // broadcast address, NOT router address
}
freeifaddrs(ifList); // clean up after yourself
Это дает вам маску подсети; для адреса маршрутизатора см. этот вопрос .
Это все старомодные сетевые компоненты UNIX, вам нужно будет выбрать, какой из интерфейсов является WiFi-соединением (там будут и другие вещи, такие как интерфейс обратной связи). Тогда вам, возможно, придется использовать такие функции, как inet_ntoa (), в зависимости от того, в каком формате вы хотите прочитать IP-адреса. Это не плохо, просто скучно и безобразно. Веселись!