системный вызов linux getpeername c ++ - PullRequest
0 голосов
/ 15 декабря 2010

В моем приложении на c ++ я использую системный вызов getpeername и он возвращает 0.0.0.0 в var sa. в errno нет ошибки, а код возврата равен 0.

вот код:

int GetSock(int sock)
{
    struct sockaddr_storage ss;
    socklen_t salen = sizeof(ss);
    struct sockaddr *sa;
    struct addrinfo hints, *paddr, *paddrp;

    sa = (struct sockaddr *)&ss;

    if (getpeername(sock, sa, &salen) != 0) {
        error = errno;
        return -1;
    }
}

примечание: я собираю этот код с помощью GCC в Eclipse. любая помощь?

спасибо!

Ответы [ 2 ]

1 голос
/ 15 декабря 2010
        error = errno;
        return -1;
    }
    /* Did you mean to return something right here? */
}
0 голосов
/ 15 декабря 2010

После успешного завершения возвращается 0.В противном случае должно быть возвращено -1 и установлено значение errno, указывающее на ошибку.

РЕДАКТИРОВАТЬ: Проверьте значение sock.getpeername извлекает и сохраняет адрес равноправного сокета, в данном случае sock, и сохраняет его в sa.Если ваш сокет не создан или ваш сокет не связан с именованным сокетом, на что указывает sa, не указывается, и это может быть вашим случаем.

...