Вспомогательные процедуры преобразования

В стандартах TCP/IP определено стандартное представление для двоичных целых чисел, применяемых в заголовках протоколов. Это представление, известное под названием сетевого порядка байтов, предусматривает форму представления целых чисел со старшим байтом в начале. Квартиры продажа - продажа квартир в стамбуле.

Хотя программное обеспечение протоколов скрывает от прикладных программ основную часть значений, используемых в заголовках, программист должен знать о существовании указанных стандартов, поскольку некоторые процедуры сокетов требуют записи параметров в сетевом порядке байтов. Например, сетевой порядок байтов применяется в поле порта протокола структуры sockaddr_in.

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

Процедуры преобразования подразделяются на два набора, с суффиксами s (сокращение от слова short) и 1 (сокращение от слова long), предназначенные для работы, соответственно, с 16-битовыми и 32-битовыми целыми числами. Функции htons (сокращение от host to network short) и ntohs (сокращение от network to host short) выполняют прямое и обратное преобразование целых чисел в коротком формате из порядка байтов хоста в сетевой порядок байтов. Аналогичным образом, функции htonl и ntohl выполняют прямое и обратное преобразование целых чисел в длинном формате из порядка байтов хоста в сетевой порядок байтов.

В программном обеспечении, в котором используются протоколы TCP/IP, необходимо вызывать функции htons, ntohs, htonl и ntohl для прямого и обратного преобразования двоичных целых чисел из порядка байтов хоста в стандартный сетевой порядок байтов. Выполнение этого требования обеспечивает переносимость исходного кода на любой компьютер независимо от предусмотренного в нем порядка байтов.

5.9. Применение вызовов функций сокетов в программе

На рис. 5.3 показана последовательность вызовов, выполняемых клиентом и сервером с использованием протокола TCP. В клиентской программе создается сокет с помощью функции socket, вызывается функция connect для подключения к серверу, а затем осуществляется обмен данными с использованием функции send (или write) для передачи запросов и recv (или read) — для получения ответов. По окончании использования соединения в клиентской программе вызывается функция close. В серверной программе используется функция bind для указания локального (известного клиенту или общепринятого) порта протокола, который будет применяться в сервере; вызывается функция listen для установки длины очереди запросов на соединение, а затем серверная программа входит в цикл. Сервер в цикле вызывает функцию accept для перехода к ожиданию поступления очередного входящего запроса на установление соединения, затем в нем используются функции recv и send (или read и write) для взаимодействия с клиентом, и наконец, вызывается функция close для разрыва соединения. После этого сервер возвращается в цикле к выполнению вызова функции accept, в котором он ожидает поступления следующего запроса на установление соединения. Сервер функционирует неопределенно долгое время. Он ожидает поступления нового запроса на соединение через общепринятый порт, принимает запрос, взаимодействует с клиентом, а затем закрывает соединение.

Похожие статьи Меню Опрос Фото Популярное