Как найти IP-адреса с BSD-сокетами? - PullRequest
1 голос
/ 16 августа 2011

Я использую сокеты BSD поверх WLAN.Я заметил, что IP-адрес моего сервера иногда меняется при подключении к нему.Проблема в том, что я ввожу IP-адрес в свой код в виде буквенной строки.Поэтому, когда он меняется, я должен зайти в код и изменить его там.Как я могу изменить код, чтобы он использовал тот IP-адрес, который есть в данный момент?Это вызов в коде сервера

if ((status = getaddrinfo("192.168.2.2", port, &hints, &servinfo)) != 0)

и на стороне клиента то же самое.Я попытался NULL для адреса с обеих сторон, но клиент не будет подключаться и просто выдаст мне ошибку «Отказано в соединении».

Спасибо за любую помощь.

Ответы [ 3 ]

3 голосов
/ 16 августа 2011

Используйте доменное имя, которое можно найти в файле хоста или в DNS, а не IP-адрес.

1 голос
/ 16 августа 2011

Дайте вашему серверу имя и используйте gethostbyname, чтобы найти его адрес (и, как правило, введите имя сервера в файл конфигурации вместо его жесткого кодирования, хотя по умолчанию используется жесткий код)если вы не можете найти файл конфигурации, не повредит).

1 голос
/ 16 августа 2011

Как насчет параметра командной строки?

int main( inr argc, char* argv[] ) {
    const char* addr = "myfancyhost.domain.com"; /* default address */
    if ( argc > 1 ) {
        addr = argv[1]; /* explicit address */
    }
    if ((status = getaddrinfo(addr, ...
...