Процедура отключения клиента по решению пользователя

Схема алгоритма представлена на рисунке 4.10. даннаая процедура позволяет отключить клиента, подключенного к серверу, с помощью процедуры «Отключить клиента». Эти действия реализованы блоками 1 – 7 на рисунке 4.10 и операторами 257 – 264 приложения И.

Рисунок 4.10 – Схема алгоритма отключения клиента по решению пользователя

 

4.3.2.10 «Оконная» процедура программы-сервера

 

Схема алгоритма представлена на рисунке 4.11. В схеме алгоритма отражены только действия, связанные с сокетами.

При создании окна приложения-сервера создается также поле ввода, редактирования и отображения текста, подключается библиотека работы с сокетами и о результате подключения выводится сообщение. Эти действия реализованы блоками 4 – 9 на рисунке 4.11, лист1 и операторами 274 – 289 приложения И.

Организована обработка сообщений WSA_NETEVENT – о сетевом событии от сокета, WSA_ACCEPT – о запросе на присоединение клиента. Особенность обработки сообщения WM_DESTROY о закрытии окна приложения-сервера является то, что предварительно надо отключиться от библиотеки работы с сокетами. Эти действия реализованы блоками 3,10, 11 - 13 на рисунке 4.11, лист1 и операторами 329 – 338 приложения И.

При получении сообщения WM_COMMAND о поступлении команды выполняется ее декодирование и организовывается переключатель для выбора процедуры обработки в зависимости от кода команды. Эти действия реализованы блоками 1 - 8 на рисунке 4.11, лист2 и операторами 290 – 322 приложения И

Рисунок 4.11, лист 1 – Схема алгоритма «оконной» процедуры программы-сервера

 

Рисунок 4.11, лист 2.

 

Описание программы-клиента

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

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

 

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

Исходный текст Описание
char szBuf[512]; Буфер для обменов информацией
DWORD cbWritten; Количество байтов, записанных в буфер
static HWND hwndEdit; Дескриптор поля редактирования
TCHAR mess[2048]; Буфер формирования сообщений на экран
TCHAR* m_mess = mess; Ссылка на буфер
#define SERV_PORT 5000 Значение номера порта сокета
#define WSA_NETEVENT (WM_USER+1) Значение кода сообщения о сетевом событии
WSADATA wsaData; сведения о конкретной реализации интерфейса Windows Sockets
WORD wVersionRequested = MAKEWORD( 1, 1 ); Номер требуемой версии Windows Sockets
int err=0; Код ошибки
SOCKET cln_socket=INVALID_SOCKET; Сокет сервера
static PHOSTENT phe; Дескриптор компьютера, на котором запущена программа-сервер
SOCKADDR_IN dest_sin; Адрес сервера
char szHostName[128] = "localhost"; имя хоста