Преобразование IN_ADDR в SOCKADDR
От: _agg  
Дата: 20.08.18 05:32
Оценка:
Всем привет, задачу переделываю чтобы работала на Windows XP и возникла небольшая трудность. Функции Win API InetNtop и InetPton отсутствуют в Win XP хочу заменить их на WSAAddressToString и WSAStringToAddress вот собственно код:
//!Convertor IN_ADDR or IN6_ADDR to CString. Argument addr cast from IN_ADDR or IN6_ADDR, in argument Family set the AF_INET or AF_INET6 
inline bool Ip2Str(PVOID addr, CString &ip, CString &err_msg, INT Family = AF_INET){
    bool ret_val(false);
    TCHAR ip_[MAX_ADDRESS_STRING_LENGTH] = { '\0' };
    if (InetNtop(Family, addr, ip_, MAX_ADDRESS_STRING_LENGTH)){
        ip = ip_;
        ret_val = true;
    }
    else{
        err_msg = GetErrMsg(WSAGetLastError());
    }
    return ret_val;
}
//!Convertor from CString ip address to IN_ADDR or IN6_ADDR. Argument addr cast from IN_ADDR or IN6_ADDR, in argument Family set the AF_INET or AF_INET6
inline bool Str2Ip(const CString &ip, PVOID *addr, CString &err_msg, INT Family = AF_INET){
    bool ret_val(false);
    if (InetPton(Family, ip, addr)){
        ret_val = true;
    }
    else{
        err_msg = GetErrMsg(WSAGetLastError());
    }
    return ret_val;
}


Что бы заменить функции InetNtop и InetPton на WSAAddressToString и WSAStringToAddress в моем случае нужно преобразовать IN_ADDR в SOCKADDR и наоборот, кто в курсе как это сделать подскажите плиз.
Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.