Программное получение Ip из Dns
Я пишу сетевое приложение и недавно столкнулся со следующей проблемой. У меня есть следующий WinSock/BSD совместимый код:
//
signed int result;
#ifndef UNIX
WSADATA WSAData;
result = WSAStartup(MAKEWORD(1, 1), &WSAData);
if(result != 0)
{
ERRORLOG("Ошибка при инициализации системы WinSock");
throw (signed int) 1;
}
#endif
SMTPServer=socket(AF_INET, SOCK_STREAM, 0);
if(SMTPServer==INVALID_SOCKET)
{
ERRORLOG("Ошибка при создании socket объекта");
throw 2;
}
struct sockaddr_in SERVERAddress;
SERVERAddress.sin_family = AF_INET;
SERVERAddress.sin_addr.s_addr = inet_addr(SMTPIServerIP.c_str());
SERVERAddress.sin_port = htons(SMTPServerPort);
result=connect(SMTPServer,(struct sockaddr*)&SERVERAddress, sizeof(SERVERAddress));
if(result)
{
throw 3;
}
...
//
В данном фрагменте вызов inet_addr(SMTPIServerIP.c_str()) используется для превращения строки с IP адресом (объекта string с содержимым типа “127.0.0.1”) в in_addr.
Подскажите мне пожалуйста какие функции (не специфичные для Microsoft) я могу использовать для получения IP адреса из DNS имени.
Или же, подскажите мне пожалуйста как я могу настроить и создать SOCKET объект не имея IP адреса и располагая только DNS именем.
Заранее спасибо за любой ответ или ссылку на интересующий меня материал.
Цитата:
Originally posted by rarelang
Всем привет,
Я пишу сетевое приложение и недавно столкнулся со следующей проблемой. У меня есть следующий WinSock/BSD совместимый код:
//
signed int result;
#ifndef UNIX
WSADATA WSAData;
result = WSAStartup(MAKEWORD(1, 1), &WSAData);
if(result != 0)
{
ERRORLOG("Ошибка при инициализации системы WinSock");
throw (signed int) 1;
}
#endif
SMTPServer=socket(AF_INET, SOCK_STREAM, 0);
if(SMTPServer==INVALID_SOCKET)
{
ERRORLOG("Ошибка при создании socket объекта");
throw 2;
}
struct sockaddr_in SERVERAddress;
SERVERAddress.sin_family = AF_INET;
SERVERAddress.sin_addr.s_addr = inet_addr(SMTPIServerIP.c_str());
SERVERAddress.sin_port = htons(SMTPServerPort);
result=connect(SMTPServer,(struct sockaddr*)&SERVERAddress, sizeof(SERVERAddress));
if(result)
{
throw 3;
}
...
//
В данном фрагменте вызов inet_addr(SMTPIServerIP.c_str()) используется для превращения строки с IP адресом (объекта string с содержимым типа “127.0.0.1”) в in_addr.
Подскажите мне пожалуйста какие функции (не специфичные для Microsoft) я могу использовать для получения IP адреса из DNS имени.
Или же, подскажите мне пожалуйста как я могу настроить и создать SOCKET объект не имея IP адреса и располагая только DNS именем.
Заранее спасибо за любой ответ или ссылку на интересующий меня материал.
Всем привет,
Я пишу сетевое приложение и недавно столкнулся со следующей проблемой. У меня есть следующий WinSock/BSD совместимый код:
//
signed int result;
#ifndef UNIX
WSADATA WSAData;
result = WSAStartup(MAKEWORD(1, 1), &WSAData);
if(result != 0)
{
ERRORLOG("Ошибка при инициализации системы WinSock");
throw (signed int) 1;
}
#endif
SMTPServer=socket(AF_INET, SOCK_STREAM, 0);
if(SMTPServer==INVALID_SOCKET)
{
ERRORLOG("Ошибка при создании socket объекта");
throw 2;
}
struct sockaddr_in SERVERAddress;
SERVERAddress.sin_family = AF_INET;
SERVERAddress.sin_addr.s_addr = inet_addr(SMTPIServerIP.c_str());
SERVERAddress.sin_port = htons(SMTPServerPort);
result=connect(SMTPServer,(struct sockaddr*)&SERVERAddress, sizeof(SERVERAddress));
if(result)
{
throw 3;
}
...
//
В данном фрагменте вызов inet_addr(SMTPIServerIP.c_str()) используется для превращения строки с IP адресом (объекта string с содержимым типа “127.0.0.1”) в in_addr.
Подскажите мне пожалуйста какие функции (не специфичные для Microsoft) я могу использовать для получения IP адреса из DNS имени.
Или же, подскажите мне пожалуйста как я могу настроить и создать SOCKET объект не имея IP адреса и располагая только DNS именем.
Заранее спасибо за любой ответ или ссылку на интересующий меня материал.
Смотри хелп по функции gethostbyname.