
Среда программирования: C под Linux
Название работы: Пересылка файла по сети между клиентом и сервером
Вид работы: Лабораторная работа
Тематика работы: Сети, Технологии
Объем программы: 7 (по десятибалльной шкале)
Уровень сложности: 8 (по десятибалльной шкале)
Разработчик (автор):
Программист сайта kursovik.com
(письмо автору)
Данная работа написана ЧЕЛОВЕКОМ без использования ИИ
Ключевые слова: linux, unix, клиент, сервер, сокет, пересылка
Функции программы:
Клиент читает файл, пересылает его серверу.
Сервер, в свою очередь, пересылает файл всем подключенным клиентам, кроме отправителя.
Клиент, получив файл, записывает его.
К программе Бесплатно прилагается краткое описание работы программы.
Исходный код состоит из двух програмных модулей - программа сервера и программа клиента.
Описание (отчет):
Есть
, посмотреть оглавление
Перед покупкой готовой работы не забудьте проверить её оригинальность. Запросить у администратора проверку текущей оригинальности работы по версии системы Антиплагиат.РУ
Отчет к программе. СодержаниеОписание работы программы. После запуска программы сервера происходит создание сокета socket(), затем привязка порта к сокету bind() . Очередь сокета активизируется после вызова функции listen(), После чего он переходит в режим прослушивания . Функция accept() ожидает и принимает запросы на подключение от клиентов . Для каждого подключившегося клиента создается отдельный процесс с помощью функции fork() . С третьим по счету клиентом работает основной процесс . После соединения каждому клиенту сервер отправляет его номер (в сервере имеется счетчик подключений) . Клиент анализирует этот номер . Если номер меньше трех – ждет файл . Если номер равен три – начинает читать файл f_out .txt с диска и пересылать через сокет серверу . Для обмена данными между процессами в программе сервера создается очередь сообщений . Главный процесс, получив от третьего клиента блок информации (строка 10 символов), помещает его в очередь . В элемент сообщения mtype помещается идентификатор процесса, которому предназначено это сообщение . Дочерний процесс получает нужное ему сообщение с помощью функции msgrcv() . В параметрах функции указывается тип ожидаемого сообщения (в нашем случае PID процесса) . Строка отправляется через сокет клиенту . После запуска клиента происходит создание сокета, привязка порта, и соединение к серверу connect() . Клиент при отправке файла следит за его объемом и выдает на экран количество переданных байт . По окончании файла серверу передается строка-признак . При приеме клиентом также выводится информация о полученном объеме . test_c .cpp - исходник клиента test_cli - исполняемый файл клиента f_out .txt - файл для пересылки (содержание - какаято документация, можно любое содержание) test_s .cpp - исходник сервера test_srv - исполняемый файл Все это делалось и отлаживалось в Linux Mandrake 8 .0 В test_c .cpp есть #define NOMER_TRI "3", а в test_s .cpp есть #define NOMER_TRI 3 . Это значит, что третий по счету подключившийся клиент будет передовать файл серверу, а сервер будет пересылать его (файл) первым двум клиентам . Если менять значение, то в обоих исходниках . При запуске клиента надо указать в строке IP сервера . Если запускать сервер и клиент на одной машине то можно так: test_cli 127 .0 .0 .1
|
Стоимость ИСХОДНОГО ТЕКСТА программы составляет 1000 руб РФ Продажа каждой работы строго учитывается, у каждой работы есть своя история продаж. |