Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ С\С++ _ [СИ]select и разрешение имен хостов

Автор: Гость_oleg_2_* 25.2.2010, 5:12

[СИ]select и разрешение имен хостов

язык СИ
ОС UNIX

Пытаюсь написать простой малопроцессный
сервер (однонитевой).
Малопроцессный подразумевает:
один процесс сервера обслуживает несколько клиентов.
Использую TCP-сокеты и select.
Select занимает центральное место, а все
остальное к нему прилажено.
Все функции сокетов, pipe-каналов и файлов
хорошо прилаживаются к select.
Но потребовалось разрешать имена хостов
в ip-адреса, а функция
hp=gethostbyname(serv_name);
которой я раньше пользовался,
не прилаживается.

Существует ли какой-нибудь способ
разрешения имен хостов не подвисая.

Кто знает прошу ответить.



Автор: ViGOur 25.2.2010, 21:51

Что значит не прилаживается?
Для использования gethostbyname в unix нужно подключить netdb.h, пример использования:

#include <stdio.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>

void main(void)
{
  hostent *pHost = gethostbyname("crossplatform.ru");
  if( pHost==0)
  {
    herror( "gethostbyname failed");
    exit(1);
  }
  in_addr *pAddr=(in_addr * )pHost->h_addr;
  printf("IP Address: %s\n", inet_ntoa( *pAddr));
}

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)