Пишу библ. для работы с почтой. Для конекта к серверу надо получить его IP адрес. Микрософт рекомендует делать это ф-цией getaddrinfo http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/getaddrinfo_2.asp эта ф-ция возвращает структуру addrinfo http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/addrinfo_2.asp которая в свою очередь содержит структуру sockaddr http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/sockaddr_2.asp Вот тут непонятки - возможно три варианта структур sockaddr_in, sockaddr_in6 и sockaddr_in6_old И ни где на написано как определить какая структра вернулась! Порылся в Гугле - ничего определенного - в основном перепечатки с МСДН. Кто сталкивался ? Заранее спасибо.
это зависит от того, какой протокол используется при вызове getaddrinfo. если нужен IP, используй функцию gethostbyname и sockaddr_in
Микрософт настоятельно рекомендует не юзать эту ф-цию http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/getaddrinfo_2.asp Я вот подумал : ф-ция getaddrinfo возвращает sockaddr (один из трех). А ф-ция connect требует как параметр тоже структуру sockaddr Т.е. искать адрес наверно и не понадобится! Просто передать указатель от одной к другой. Я думаю эти две ф-ции как-нить разберутся между собой Правда, я еще не пробовал этот вариант.
При работе с IP версии 4 используется структура sockaddr_in. При работе с IP версии 6 используются структуры sockaddr_in6 и sockaddr_in6_old. Следовательно, функции будут принимать и возвращать sockaddr_in (если ты не работаешь с IPv6).