Ресурс временно недоступен в gethostbyname () - PullRequest
0 голосов
/ 27 февраля 2019

Я писал свой первый клиент на C, когда достиг точки, когда мне нужно было отправить сокет на сервер.Когда я пытаюсь получить его адрес, я получаю

Ресурс, временно недоступный

, и я не могу найти причину этой проблемы.

dadesSoftConfig-> ipServer находится внутри localhost

    struct hostent *ent;

    ent = gethostbyname(dadesSoftConfig->ipServidor);
    if (ent == NULL) {
        int errnum = errno;
        fprintf(stderr, "Client finalitzat: %s\n", strerror(errnum));
        exit(EXIT_FAILURE);
    }

Я не отправляю никакой сокет, пока не ожидаю каких-либо данных, когда я делаю этот вызов, это происходит в самом начале, даже дофаза регистра моего протокола.

По запросу, это распечатка dadesSoftConfig:

DEBUG_INFO:     Nom: SW-01
                Mac: 89F107457A36
                Server: localhost
                Server-port: 2019

И вот как я это печатаю:

void print_software_configuration(TDadesSoftConfig *dades) {
    char *msg;
    msg = (char *) malloc(sizeof(char) * 75);
    if (sprintf(msg, "\tNom: %s \t\tMac: %s \t\tServer: %s \t\tServer-port: %d\n", 
                dades->nom, dades->mac, dades->ipServidor, dades->serverPort) < 0) {
        fprintf(stderr, "No s'ha pogut mostrar el contingut llegit\n");
    } else {
        print_debug_info(msg);
    }
    free(msg);
}

Я попытался отправить «127.0.0.1» в функцию gethostbyname (), и код прекрасно работает, даже когда я сохраняю его в своей структуре.Есть идеи, почему он не работает при отправке "localhost"?

1 Ответ

0 голосов
/ 28 февраля 2019

Как указывалось в моих печатных изданиях, структура данных была правильной, но данные, которые она содержала, не были.Информация должна отображаться через \ t \ t, а не \ n \ t \ t.

Проблема была решена при правильной установке разделителей на функцию strtok (), которая анализирует ввод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...