- •Визуальные средства разработки приложений
- •Содержание
- •Лабораторная работа № 1 Использование технологии ole db
- •1.1.Наиболее важные технологии сом
- •1.2. Единообразная передача данных и объекты с подключением
- •1.Методические указания
- •Лабораторная работа №2 Построение приложения с использованием компонентов ActiveX
- •2.1. Управляющие элементы ActiveX
- •2.2. Методические указания
- •Лабораторная работа №3 Использование потоков в приложении
- •3.1.Потоковая многозадачность
- •3.2.Потоки mfc
- •3.3. Синхронизация потоков
- •3.4. Методические указания
- •3.4.1. Создание рабочего потока
- •3.4.2.Остановка и возобновление выполнения потоков
- •3.4.3. Управление приоритетами потоков
- •3.4.4.Синхронизация потоков
- •3.4.5.Работа с семафорами
- •3.4.6.Работа с объектами событий
- •3.4.7 Использование критической секции
- •3.4.8 Использование исключающего семафора
- •Варианты индивидуального задания
- •Лабораторная работа №4 Программирование для Интернета с использованием Windows Sockets
- •4.1. Сокеты, порты, адреса
- •4.2. Модель клиент - сервер
- •Связь клиент - сервер
- •4.3. Класс cAsyncSocket
- •4.4. Создание сетевого приложения
- •4.4.1. Создание каркаса приложения
- •4.4.2.Функции класса cAsyncSocket Class
- •Задание к лабораторной работе
- •Варианты индивидуального задания
- •Литература
- •220027, Минск, ул. П. Бровки, 6
4.3. Класс cAsyncSocket
Класс CAsyncSocket инкапсулирует асинхронные вызовы Winsock. Он содержит набор полезных функций, использующих Winsock API( табл.4.1).
Таблица 4.1
Методы класса CasyncSocket
Метод |
Назначение |
Accept |
Обрабатывает запрос на соединение, который поступает на принимающий сокет, заполняя его информацией об адресе |
AsyncSelect |
Организует посылку сообщения Windows при переходе сокета в состояние готовности |
Attach |
Связывает дескриптор сокета с экземпляром класса CAsyncSocket, чтобы иметь возможность сформировать соединение с другим компьютером |
Bind |
Ассоциирует адрес с сокетом |
Close |
Закрывает сокет |
Connect |
Подключает сокет к удаленному адресу и порту |
Create |
Завершает процесс инициализации, начатый конструктором |
GetLastError |
Возвращает код ошибки сокета |
GetPeerName |
Определяет адрес IP и номер порта удаленного компьютера |
GetSockName |
Возвращает адрес IP и номер порта объекта this |
Listen |
Заставляет сокет следить за запросами на соединение |
OnAccept |
Обрабатывает сообщение Windows, которое формируется при приеме гнездом запроса на соединение. Часто переопределяется в производных классах |
OnClose |
Обрабатывает сообщение Windows, которое формируется при закрытии сокета. Часто переопределяется в производных класса |
OnConnect |
Обрабатывает сообщение Windows, которое формируется после установки соединения или после неудачной попытки соединиться |
OnReceive |
Обрабатывает сообщение Windows, которое формируется при появлении данных, которые можно прочесть с помощью Receive() |
OnSend |
Обрабатывает сообщение Windows, которое формируется при готовности гнезда принять данные, посылаемые с помощью Send() |
Receive |
Считывает данные с удаленного компьютера, к которому подключен сокет |
Send |
Посылает данные удаленному компьютеру |
SetSockOpt |
Устанавливает параметры сокета |
ShutDown |
Оставляет сокет открытым, но предотвращает дальнейшие вызовы Send() или Receive() |
4.4. Создание сетевого приложения
В качестве примера сетевого приложения создадим диалоговое приложение, которое сможет работать либо в качестве сервера, либо в качестве клиента. Это позволит проверить созданное приложение, если запустить две копии приложения, по одной на каждом конце соединения. Эти две копии или могут быть расположены на одном компьютере, или же одна из копий может быть установлена на другом компьютере, тогда два приложения будут работать на различных компьютерах, передавая сообщения по сети. После этого можно проверить созданное приложение в работе. После того как между приложениями будет установлено соединение, можно передавать сообщения от одного приложения другому. После того как сообщение послано, оно будет добавлено в список переданных сообщений. В свою очередь каждое полученное сообщение будет помещено в список всех полученных сообщений. Это позволит затем сравнить списки полученных и посланных сообщений и убедиться, что они совпадают.
