Android NDK (Sockets) - recvfrom () устанавливает sockaddr * из NULL (не может получить IP отправителя) - PullRequest
1 голос
/ 14 ноября 2011

Когда я звоню recvfrom с помощью Android NDK, я получаю NULL, возвращенную на мой sockaddr_in from.Этот же точный код прекрасно работает на моем рабочем столе, но не на устройстве.

int MyClass::ReceiveData(char *buffer, int bufferLength)
{
    int numBytes = 0;
    struct sockaddr_in from;
    socklen_t fromLength = sizeof(struct sockaddr_in);
    numBytes = recvfrom(mConnectionSocket,
                        buffer,
                        bufferLength,
                        0,
                        (struct sockaddr *)&from,
                        &fromLength);
    if (numBytes == -1)
        perror("recvfrom");

    int fromAddress = ntohl(from.sin_addr.s_addr);

    return fromAddress;
}

У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 14 ноября 2011

Я получаю NULL, возвращенный моему sockaddr_in 'из'

Это невозможно с этим кодом. from не указатель, который может стать NULL. Скорее всего, ваша структура sockaddr_in с именем from получает обнуляется. Это может быть вызвано использованием этого в сокете TCP. Если это TCP, вы должны вызывать getpeername() в сокете, чтобы получить адрес партнера.

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