
- •Методические указания
- •Понятие сокета
- •Протоколы и семейства адресов
- •Инициализация Winsock
- •Адресация сокетов для протокола ip
- •Специальные ip-адреса
- •Порядок байт
- •Разрешение имен
- •Номера портов
- •Типы сокетов
- •Коммуникационная модель клиент-сервер
- •Создание сокета
- •Проверка и обработка ошибок
- •Серверные api-функции
- •Клиентские api-функции
- •Передача и прием данных по сокету (потоковые протоколы)
- •Завершение сеанса
- •Протоколы без предварительного установления соединения
- •Порядок выполнения работы
- •Контрольные вопросы
Порядок выполнения работы
Задание 1.
Разработать TCP-сервер, создающий сокет, привязывающий его к локальному IP-адресу и порту и прослушивающий соединения клиентов. Номер порта и IP-адрес вводить с клавиатуры. IP-адрес задавать в десятично-точечной нотации.
Учесть, что функция accept возвращает новый дескриптор сокета, соответствующий принятому клиентскому соединению. Для всех последующих операций с данным клиентским соединением должен применяться новый сокет. Исходный прослушивающий сокет используется для приема других клиентских соединений и продолжает находиться в режиме прослушивания. При получении от клиента запроса на установление соединения вывести на экран IP-адрес и номер порта клиентского сокета.
Разработать приложение–клиент, соединяющееся с заданным TCP-сервером. Все отправленные и полученные по сокету данные вывести на экран.
При вызове API-функций выполнять проверку и обработку ошибок.
Нарисовать блок-схему серверной и клиентской части программы.
Задание 2.
Разработать серверное приложение, выполняющее получение данных через сокет без установления соединения по протоколу UDP.
Разработать клиентское приложение, выполняющее отправку UDP-дейтаграмм. IP-адрес и порт удаленного получателя должен задаваться пользователем.
При вызове API-функций выполнять проверку и обработку ошибок.
Адреса сокетов вывести на экран.
Нарисовать блок-схему серверной и клиентской части программы.
Варианты заданий:
Удаленный калькулятор (+,-,*,/);
Работа с массивом чисел (количество элементов в массиве, получение значения элемента массива по номеру, найти номер элемента в массиве по значению, увеличить значения элементов на заданное число);
Работа с массивом символов (преобразовать символы в верхний регистр, в нижний регистр, проверить, является ли символ цифрой, буквой, получить значение элемента массива);
Удаленный однострочный редактор (вставка символа в позицию, в конец строки, удаление символа из позиции);
Редактор для работы с двумя строками (конкатенация строк, проверка на равенство строк, проверка на равенство длин, вставка второй строки в заданную позицию первой);
Удаленный генератор псевдослучайных последовательностей (одно целое число в диапазоне, массив чисел в диапазоне).
При разработке программ использовать функции Windows API или класс Socket пространства имен System.Net .NET Framework. В качестве языков программирования - C++, либо C#.
Контрольные вопросы
Что такое сокет? Какая версия Winsock используется на платформе Win32?
Сколько сокетов необходимо для взаимодействия клиента и сервера? Что представляет собой адрес сокета?
Назовите типы сокетов. В каком случае предпочтительнее использовать тот или иной тип сокетов?
Какой адрес можно использовать, чтобы прослушивать все сетевые интерфейсы локального узла?
Какой порядок байтов используется в Intel-совместимых процессорах? Какой порядок байтов применяется для работы с сокетами?
Какие номера портов могут задействовать прикладные программы при работе с сокетами?
Какая функция позволяет узнать номера портов, используемых стандартными службами? В каком файле хранится эта информация?
Чем отличается процесс получения и отправки данных на сокете, не требующем соединения?
Как осуществляется корректное завершение сеанса работы с сокетом? В чем отличие завершения работы с потоковым и дейтаграммным сокетом?