Какие часто используемые функции сетевого программирования / фрагменты кода? - PullRequest
1 голос
/ 14 ноября 2009

Все мы, кто до сих пор занимается каким-либо сетевым программированием (TCP / UDP, DNS или клиент / сервер) в C, неоднократно снова и снова используют некоторые фрагменты кода.

Мы используем некоторые стандартные библиотеки, но также очень часто пишем некоторый код, которого нет ни в одной библиотеке.

Существует ли коллекция таких фрагментов кода, которые используются очень часто. Если нет, то давайте построим его здесь.

Ответы [ 3 ]

3 голосов
/ 14 ноября 2009

W. Ричард Стивенс написал коллекцию таких фрагментов: Сетевое программирование в UNIX, том 1, второе издание: Сетевые API: сокеты и XTI

3 голосов
/ 14 ноября 2009

Хороший вопрос!

Вот функция разрешения имен

    struct hostent {
        char *h_name; // main name
        char **h_aliases; // alternative names (aliases)
        int h_addrtype; // address type (usually AF_INET)
        int h_length; // length of address (in octets)
        char **h_addr_list; // alternate addresses (in Network Byte Order)
    };
    #define h_addr h_addr_list[0] // First address of h_addr_list.


    struct hostent *info_stackoverflow;
    int i = 0;
    info_stackoverflow = gethostbyname( "www.stackoverflow.com" );
    printf("The IP address of %s is %s", 
           info_stackoverflow->h_name, 
           inet_ntoa( * ((struct in_addr *)info_stackoverflow->h_addr )));
    /* aliases */
    while( *(pc_ip->h_aliases + i) != NULL )
    {
        printf("\n\tAlias: %s", *(pc_ip->h_aliases + i) );
        i++;
    }
2 голосов
/ 14 ноября 2009

Вот сетевое программирование UNIX, том 1, третье издание, исходный код Здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...