Книга: UNIX: разработка сетевых приложений

8.3. Эхо-сервер UDP: функция main

8.3. Эхо-сервер UDP: функция main

Теперь мы переделаем нашу простую модель клиент-сервер из главы 5, используя UDP. Диаграмма вызовов функций в программах наших клиента и сервера UDP показана на рис. 8.1. На рис. 8.2 представлены используемые функции. В листинге 8.1[1] показана функция сервера main.


Рис. 8.2. Простая модель клиент-сервер, использующая UDP

Листинг 8.1. Эхо-сервер UDP

//udpcliserv/udpserv01.с
 1 #include "unp.h"
 2
 3 intmain(int argc, char **argv)
 4 {
 5  int sockfd;
 6  struct sockaddr_in servaddr, cliaddr;
 7  sockfd = Socket(AF_INET, SOCK_DGRAM, 0);
 8  bzero(&servaddr, sizeof(servaddr));
 9  servaddr.sin_family = AF_INET;
10  servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
11  servaddr.sin_port = htons(SERV_PORT);
12  Bind(sockfd, (SA*)&servaddr, sizeof(servaddr));
13  dg_echo(sodkfd, (SA*)&cliaddr, sizeof(cliaddr));
14 }

Создание сокета UDP, связывание с заранее известным портом при помощи функции bind

7-12 Мы создаем сокет UDP, задавая в качестве второго аргумента функции socket значение SOCK_DGRAM (сокет дейтаграмм в протоколе IPv4). Как и в примере сервера TCP, адрес IPv4 для функции bind задается как INADDR_ANY, а заранее известный номер порта сервера — это константа SERV_PORT из заголовка unp.h.

13 Затем вызывается функция dg_echo для обработки клиентского запроса сервером.

Оглавление книги


Генерация: 1.484. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз