Я пишу программу на C ++, которая использует сетевые сокеты. Мне нужно выяснить IP-адрес компьютера, чтобы я мог отобразить его пользователю. Программа должна работать в Windows и Linux.
Я где-то слышал, что у компьютера может быть несколько IP-адресов. Мне нужна та, которую другие программы на разных компьютерах могут использовать для подключения к компьютеру.
Вот соответствующий код, который у меня уже есть (переменные объявлены в других местах):
master = new fd_set;
FD_ZERO(master);
struct sockaddr_in my_addr;
listener = socket(PF_INET, SOCK_STREAM, 0);
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(port);
my_addr.sin_addr.s_addr = INADDR_ANY;
memset(my_addr.sin_zero, '\0', sizeof my_addr.sin_zero);
bind(listener, (struct sockaddr *)&my_addr, sizeof my_addr);
listen(listener, 10);
FD_SET(listener, master);
fdmax = listener;