Процедура отключения клиента по решению пользователя
Схема алгоритма представлена на рисунке 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"; | имя хоста |