Разработка и описание алгоритмов работы

Состав и назначение

В состав программного обеспечения, разработанного в соответствии с заданием входят:

- программа, выполняющая функции сервера;

- две прграммы, выполняющие функции клиентов.

Программа – сервер должна выполнять следующие функции:

- подключать библиотеку для работы с сокетами;

- принимать и обеспечивать запросы на соединение с программами – клиентами через сокеты;

- посылать сообщения программам клиентам;

- принимать в асинхронном режиме информацию от программ-клиентов и выводить ее в рабочее окно;

- отключать выбранного клиента;

Программа-клиент должна выполнять следующие функции:

- подключать библиотеку для работы с сокетами;

- обеспечивать соединение с программой-сервером;

- выполнять подготовку информации для передачи программе-серверу;

- принимать и выводить в рабочее окно сообщения от программы-сервера;

- сообщать пользователю об отключении сервера.

Описание программы-сервера

Описание переменных

Описание переменных, которые используются в программе дано в таблице 4.2.

Таблица 4.2- Описание переменных и констант программы-сервер

Исходный текст Описание
char szBuf[512]; Буфер для подготовки данных
DWORD cbWritten; Количество записанных данных
static HWND hwndEdit; Дескриптор поля редактирования текста
TCHAR mess[2048]; Буфер для подготовки сообщений
TCHAR* m_mess = mess; Ссылка на буфер подготовки сообщений
#define SERV_PORT 5000 Порт сервера
#define WSA_ACCEPT (WM_USER+0) Код сообщения на подключение клиента
#define WSA_NETEVENT (WM_USER+1) Код сообщения о сетевом событии
WSADATA wsaData; Сведения о конкр. реализации интерфейса Windows Sockets
WORD wVersionRequested = MAKEWORD(1, 1); Номер требуемой версии Windows Sockets (не ниже)
int err=0; Код ошибки
SOCKET srv_socket=INVALID_SOCKET; Сокет сервера
int ClientNum = -1; Номер текущего клиента
SOCKET sock[2]; Сокеты клиентов
SOCKADDR_IN sockaddr[2]; Адреса клиентов

 

Процедура создания сокета

 

Процедурой выполняются следующие функции:

- проверка на повторность задания сокета;

- создание структуры данных для сокета и получения дескриптора сокета;

- задание типа и значения адреса и номера порта для сокета;

- связывание сокета с адресными данными;

- установка режима прослушивания сети для выявления попыток соединения с сокетом;

- установка режима асинхронного взаимодействия с сокетом.

Схема алгоритма работы процедуры представлена на рисунке 4.3.

Проверка на повторность задания сокета выполняется блоками 2,3 (рисунок 4.3 ) и операторами 117-121 приложения И.

В процедуре создается потоковый сокет и задается структура для хранения адресных данных (блоки 5-7, рисунок 4.3 и операторы 122-128 приложения И.

Для сокета определяется Интернет семейство адресов. IP адрес устанавливается по умолчанию – обычно это значение адреса локального хоста 127.0.0.1. Номер порта выбран из области свободно используемых значений и равен 5000. С помощью функции htons порядок байтов этого значения преобразуется в сетевой порядок байтов – первым идет старший байт. Эти действия реализуются блоками 9-10 на рисунке 4.3 и операторами 129-133 приложения И.

 

Рисунок 4.3 – Схема алгоритма процедуры создание сокета на стороне сервера

Связывание сокета с адресными данными реализуются блоками 11-14 на рисунке 4.3 и операторами 134 -140 приложения И.

Установка режима прослушивания сети для выявления попыток соединения с сокетом реализуются блоками 15-17 на рисунке 4.3 и операторами 141 -147 приложения И.

Установка режима асинхронного взаимодействия с сокетом реализуются блоками 18-21 на рисунке 4.3 и операторами 148 -158 приложения И.