Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Калюжный. лабы.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
160.08 Кб
Скачать
    1. Получение данных

Для получения данных от партнера по сетевому взаимодействию используется системный вызов recv, имеющий следующий вид

#include <sys/types.h>

#include <sys/socket.h>

int recv (s, buf, len, flags)

int s;

char *buf;

int len;

int flags;

Аргумент s задает дескриптор socket'а, через который принимаются данные.

Аргумент buf указывает на область памяти, предназначенную для размещения

принимаемых данных. Аргумент len задает длину (в байтах) этой области. Аргумент flags модифицирует исполнение системного вызова recv. При нулевом значении этого аргумента вызов recv полностью аналогичен системному вызову read. При успешном завершении recv возвращает количество принятых в область, указанную аргументом buf, байт данных. Если канал данных, определяемый дескриптором s, оказывается "пустым", то recv переводит программу в состояние ожидания до момента появления в нем данных.

    1. Функции закрытия связи

Для закрытия связи с партнером по сетевому взаимодействию используются системные

вызовы close и shutdown.

Системный вызов close

Для закрытия ранее созданного socket'а используется обычный системный вызов close, применяемый в ОС UNIX для закрытия ранее открытых файлов и имеющий следующий вид.

int close (s)

int s;

Аргумент s задает дескриптор ранее созданного socket'а.

Однако в режиме с установлением логического соединения (обеспечивающем, как правило, надежную доставку данных) внутрисистемные механизмы обмена будут пытаться передать/принять данные, оставшиеся в канале передачи на момент закрытия socket'а. На это может потребоваться значительный интервал времени, неприемлемый для некоторых приложений. В такой ситуации необходимо использовать описываемый далее

системный вызов shutdown.

  1. Цикл лабораторных работ «Сетевое программирование на базе

Sockets API»

Разработать сетевое приложение в соответствии с вариантом задания.

Замечания по выполнению лабораторых работ

Дополнительную информацию по использованию библиотеки Socket API можно найти в приложении A.

Отчет должен содержать:

- цель лабораторной работы;

- вариант задания на лабораторную работу;

- тексты программ клиента и сервера на языке СИ (копии экрана) ;

- результаты компиляции и запуска программ клиента и сервера (копии экрана).

Задание на лабораторную работу 1.

Разработать сетевое приложение, состоящее из клиентской и серверной програм. После запуска серверная программа должна выводить на экран

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

Задание на лабораторную работу 2.

Разработать сетевое приложение, состоящее из клиентской и серверной програм и взаимодействующим на одном компьютере через localhost. После запуска серверной программы и установлении соединения, cервер должен отправить сообщение « Кто ты» Клиент должен ответить: Я твой клиент.

Задание на лабораторную работу 3.

Разработать сетевое приложение, состоящее из клиентской и серверной програм. Серверная программа должна быть в состоянии умножать два целых числа. В ответ на запрос клиентской программы, передающей эти числа серверной программе, cервер должен вернуть ей результат.

Задание на лабораторную работу 4.

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

Получить вариант задания у преподавателя.

  1. Загрузить Linux.

  2. Запустить терминал.

  3. Перейти в каталог tmp ( сd /tmp ).

  4. В дериктории tmp cоздать пустой файл server.c ( touch server.c ).

  5. Подключить редактор mc ( Midnight Commander ) для набора текста программы сервера ( mcedit server.c ).

  6. Набрать и отредактировать программу сервера server.c

  7. Сохранить текст программы в дерикрории tmp ( F2 ).

  8. Выполнить пункты 3 – 7 для создания и сохранения программы клиента client.c.

  9. Нажать дважды Esc, чтобы перейти в командную строку.

  10. Cкомпилировать программу server.c ( gcc server.c –o server ).

  11. Скомпилировать программу client.c ( gcc client.c –o client ).

  12. Убедиться, что в рабочем детиктории появились файлы server и client ( ls –la ).

  13. Запустить на выполнение программу server ( ./ server ввод ).

  14. Запустить на выполнение программу client ( ./client ввод ).

  15. Убедиться, что получен правильный результат.

  16. Показать этот результат преподавателю.

  17. Вставить флэш накопитель.

  18. Открыть файловый менеджер.

  19. Cохранить тексты программ из /tmp в флэш память ( или при необходимости записать их в /tmp из флэш памяти если набор текстов программ и их редактирование не были завершены ).

  20. Cделать копию экрана с текстами программ клиента и сервера.

  21. Отключить флэш накопитель в файловом менеджере и извлечь его.

  22. Удалить файлы server и client из каталога /tmp ( rm /tmp/file ).

  23. Показать результат удаления текстов программ преподавателю.