как преобразовать структуру sockaddr в sockaddr _в -сетевых сокетах C++ UDP Ubuntu

Я пытаюсь получить адрес клиента, но не знаю, как преобразовать структуру sockaddr в sockaddr _?

struct sockaddr_in cliAddr, servAddr;

    n = recvfrom(sd, msg, MAX_MSG, 0,(struct sockaddr *) cliAddr,sizeof(cliAddr));

 //i tried this but it does not work
    struct sockaddr cliSockAddr = (struct sockaddr *) cliAddr; 
    char *ip = inet_ntoa(cliSockAddr.sin_addr);

Заранее спасибо!:)


я нашел вопросы, которые привели меня к этому шагу: Получение адреса IPV4 из структуры sockaddr


Извините, чтобы избежать путаницы, это моя реальная реализация, где «ci» — это объект для хранения указателей, таких как sockaddr _.

    /* receive message */
    n = recvfrom(*(ci->getSd()), msg, MAX_MSG, 0,(struct sockaddr *) ci->getCliAddr(),ci->getCliLen());

    char *ip = inet_ntoa(ci->getCliAddr().sin_addr);

я получу следующие ошибки:

udpserv.cpp:166: error: request for member ‘sin_addr’ in ‘ci->clientInfo::getCliAddr()’, which is of non-class type ‘sockaddr_in*’

10
задан Community 23 May 2017 в 12:34
поделиться