Алгоритм взаимодействия с клиентом 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Алгоритм взаимодействия с клиентом



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

Рис.4 Блок – схема алгоритма взаимодействия с клиентом потока на стороне сервера

Алгоритм работы клиента

Работа алгоритма заключается в следующем:

Создаётся TCP−сокета вызовом socket(). Соединение с сервером обеспечивается при помощи connect(), а передача структуры −sockaddr_in с sin_family с указанными PF_INET или PF_INET6. Для указания порта прослушивания (в байтовом порядке) используем sin_port, и sin_addr для указания IPv4 или IPv6 адреса прослушиваемого сервера (также в байтовом порядке).

Взаимодействие с сервером происходит при помощи write() и read().

Далее происходит завершение соединения и сброс информации при вызове close(). Аналогично, если были какие−либо вызовы fork(), каждый процесс должен закрыть (close()) сокет.

Рис.5 Блок - схема алгоритма работы приложения «клиент»

РАЗДЕЛ 3.
ПРИНЦИПЫ РЕАЛИЗАЦИИ ПРОГРАММЫ

В разделе описываются особенности программной реализации приложений.

Выбор языка и среды разработки

Для разработки заданных приложений был избран язык программирования C + +. Такое решение было принято после анализа преимуществ и недостатков нескольких языков программирования. С + + имеет ряд преимуществ, среди которых ее масштабируемость, быстродействие и удобство написания программ. Также важным фактором при принятии решения было наличие некоторых знаний в области этого языка программирования.

Разработка клиентского и серверного приложений проводилась в среде QNX Momentics IDE v4.7. это среда была выбрано потому, что оно обладает широким набором удобных инструментов. Эта среда позволяет одновременную отладку много потоковых приложений. Также здесь доступно профилирования программ, т.е. исследование выполнения программ с целью их оптимизации. Эта характеристика была очень важной при разработке данного приложения [4].

Инструментальная операционная система Windows 7 Ultimate, 64-разрядная ОС.

Сетевое взаимодействие

Сетевое взаимодействие между клиентом и сервером реализуется последовательностью следующих системных вызовов:

int socket (int domain, int type, int protocol) - функция создания сокета. Первый параметр надаёт ограничения на формат адресов, используемых процесс. Второй параметр определяет тип канала связи с сонетом, который должен быть использован. Третий параметр - позволяет выбрать нужный протокол для канала связи.

int bind (int s, const struct sockaddr * name, socklen_t namelen)-функция привязывает имя к сокету. Первый параметр - имя. 'Я сокета, второй - локальный адрес, третий - длина имени.

int listen (int s, int backlog) - слушать соединения на сокете. Параметр backlog задает максимальную длину, до которой может расти очередь ожидающих соединений.

int accept (int s, struct sockaddr * addr, socklen_t * addrlen) - функция используется с сонетами, ориентированными на установление соединения. Первый аргумент - сокет, который сужает соединения, второй - указатель на структуру sockaddr, третий - длина адреса в байтах.

int connect (int s, const struct sockaddr * name, socklen_t namelen) - присоединение созданного сокета к определённому порту сервера. Первый аргумент - сокет, т.е. значение, полученное вызовом socket, второй параметр - указатель на структуру sockaddr, третий - размер структуры sockaddr в байтах.

3.3. Порядок клиент-серверного взаимодействия

В основном, работа с сокетами заключается в последовательности следующих этапов:

создаётся сокет, с работодателем системного вызова socket, указывается тип подключения;

увязывание сокета с заданным сетевым интерфейсом посредством IP-адреса и порта через системный вызов bind.

ожидания подключения клиентов с помощью системного вызова listen;

посредством вызова pthread_create создаётся новый поток для подключения клиентского сокета к серверному, при посредничестве системного вызова accept;

при посредничестве системного вызова write происходит передача информации между клиентом и сервером;

функция pthread_join () приостанавливает выполнение вызывающего потока то тех пор, пока целевой поток не завершится.

Легирования

Информация о полученных пакетах от клиента к серверу, согласно задания мы записываем в лог-файл, в котором содержится следующая информация:

IP-адрес клиента;

идентификационный номер клиента;

дата и время начала передачи;

период времени передачи пакета;

размер пакета.

 

РАЗДЕЛ 4.
ЭКСПЕРИМЕНТ



Поделиться:


Последнее изменение этой страницы: 2016-08-16; просмотров: 729; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.188.33.137 (0.009 с.)