Главная » Просмотр файлов » tanenbaum_seti_all.pages

tanenbaum_seti_all.pages (525408), страница 150

Файл №525408 tanenbaum_seti_all.pages (Таненбаум Э. - Компьютерные сети) 150 страницаtanenbaum_seti_all.pages (525408) страница 1502013-09-22СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 150)

Если вызов завершается успешно, ассерг возвращает дескриптор файла, который можно использовать для чтения и записи, аналогично тому, как файловые дескрипторы могут записываться и читаться в каналах. Однако, в отличие от однонаправленных каналов, сокеты двуиаправлены, поэтому для чтения (и записи) данных из соединения надо использовать зз (адрес сокета).

После установки соединения сервер считывает имя файла. Если оно пока недоступно, сервер блокируется, ожидая его. Получив имя файла, сервер открывает файл и входит в цикл, который читает блоки данных из файла и записывает их в сокет. Это продолжается до тех пор, пока не будут скопированы все запрошенные данные. Затем файл закрывается, соединение разрывается, и начинается ожидание нового вызова. Данный цикл повторяется бесконечно. Теперь рассмотрим часть кода, описывающую клиента. Чтобы понять, как работает программа, необходимо вначале разобраться, как опа запускается. Если она называется с11епц ее типичный вызов будет выглядеть так: с11епг т11тз.сз.кнп1 !езг!Гоа!Й1епаае >Г Этот вызов сработает только в том случае, если сервер расположен по адресу 61?в.св.чц.п1, файл пзг/Гоа/Г11епаае существует и у сервера есть доступ для чтения этого файла.

Если вызов произведен успешно, файл передается по Интернету и записывается на место ?, после чего клиентская программа заканчивает свою работу. Поскольку серверная программа продолжает работать, клиент может запускать новые запросы на получение файлов. Клиентская программа начинается с подключения файлов и объявлений. Работа начинается с проверки корректности числа аргументов (эгдс = 3 означает, что в строке запуска содержались имя программы и два аргумента). Обратите внимание на то, что агдч?13 содержит имя сервера (например, бйз.сз.уц.п1) и переводится в?Р-адрес с помощью дегьозгьупаае. Для поиска имени функция использует ?)й?Б. Мы будем изучать технологию ?)?ч'Б в главе 7.

Затем создается и инициализируется сокет, после чего клиент пытается установить ТСР-соединение с сервером посредством соппесг. Если сервер включен, работает на указанной машине, соединен с БЕКЧЕР РОкТ и либо простаивает, либо имеет достаточно места в очереди 11згеп (очереди ожидания), то соединение с клиентом рано или поздно будет установлено. По данному соединению клиент передает имя файла, записывая его в сокет.

Количество отправленных байтов на единицу превышает требуемое для передачи имени, поскольку нужен еще нулевой байт-ограничитель, с помощью которого сервер может понять, где кончается имя файла. Теперь клиентская программа входит в цикл, читает файл блок за блоком из сокета и копирует на стандартное устройство вывода. По окончании этого процесса она просто завершается. Процедура Га1а1 выводит сообщение об ошибке и завершается. Серверу также требуется эта процедура, и она пропущена в листинге только из соображений экономии места. Поскольку программы клиента и сервера компилируются от- Транспортная служба 661 дельно и в обычной ситуации запускаются на разных машинах, код процедуры Та[а] не может быть разделяемым.

Эти две программы (как и другие материалы, связанные с втой книгой) можно найти на веб-сайго книги по адресу Пир://ыпштш.ргепПа!!.сопт/1апепЬацгп (ссылка рядом с изображением обложки). Их можно скачать и скомпилировать на любой []Ы!Х-системе (например, Яо(аг!в, ВЯ[), [.(Пцх). Деластся зто с помощью следующих командных строк: сс -о с)1епс с1тепс.с -1воскег -1пв1 сс -о эегчег вегчег.с -1эосхес -1пз1 Программу для сервера можно запустить, просто набрав эегчег Клиетттской программе нужны два артумстгта, как описывалось ранее.

На вебсайте можно найти и чьг!пт(отчв-версии программ. Листинг 6.1. Программы использования сокетов для клиента и сервера /" На этой странице содержится клиентская праграииа. запрашивающая файл у серверной програниы, расположенной на следующей странице. */ /* Сервер в ответ на запрос высыпает файл,*! Ф1пс!цбе <эув/[урез.п> ()1пс!цбе <зув/васке[.П> Ф1пс!цбе <лет!пег/)п.п> Ф1пс1цбе <пе(ОЬ.П> ()бег)пе 5ЕЙЧЕЙ РОЙТ 12345 /* По договоренности иежду клиентон и серверои */ (/бе[)пе ВОР 512[ 4096 /* Размер передаваемых блоков */ 1ПЬ шатп(1п! агдс. сваг *агдч) ( 1п! с.в.Ьу(ез: сбаг Пот[ВОР 512Е]; /*буфер для входящего файла */ этгцс[ Поз(ей[ *П; /*инфориация о сервере */ всгцс( эоскаоог 1п спаппе1: /*хранит !Р=адрес */ 1[ (агдс)-3) Гаса)("Для запуска введите: клиент иия сервера имя файла" ); П - деСПов(Ьупаше(агдч[!]): /* поиск 1Р-адреса хоста */ 1Т(!П) Га(а1("Ошибка выполнения де[пав(Ьупаше") э - васйе((РГ 1НЕТ.

5ОСК 5ТЙЕАМ, 1РРЙОТО ТСР): 1( (э<0) Га(а1("Сонет"): шешве[(аспаппе1. О, в1аео((сбаппе))): сПаппе1.втп Гашт1у=АЕ 1МЕТ; шешсру(асПайпе1.втп аабг.э аббг,п>П асЫг.п>П 1епд[П): спаппе1.з1п рог[-Псопв(5[йуЕЙ РОЙТ); с - соппесг(в.(в[гас[ воскаббг *) аспаппе). в1аеот(спаппе1)): 1т (с<0) Еаса!("Ошибка соединения"): /* Соединение установлено. Посылается имя файла с нупевыи байтон на конце */ ыгтве"э, агдч[2], зсг1еп(агдч[2])+1); /* Получить файл. записать на стандартное устройства вывода */ 662 Глава 6. Транспортный уровень нП!)е (1) ( Ьутез геаб(з, Ьыт, ВОР 5[ЕЕ): /* Читать из сокета */ 1Т (ЬуСез <- О) ех1С(О); /" Проверка конца файла */ ыттСе(1, Ьот. ЬуСез): /* Записать на стандартное устройство вывода */ ТаСа1(сПаг *зсг1пц) ( рг!ПСТ("Фзтп", 5Сг!пя); ех!С(1): /" Код программы для сервера */ Ф!пс)обе <зуз/Сурез.П> Ф1пс1ыбе <зуз/Тспс).П> У)пс1ыбе <зуз/зосхеС.П> Ф1пс)ыбе <пеС1пеС/1п.П> йг!пс)нбе <пеббЬ.П> шбе[!пе 5ЕйЧЕй РОЙТ 12345 /* Па договоренности между клиентон и сервером */ шбе(!пе ВЬР 5![Е 4096 /* Размер передаваемых блоков */ Фбе[!пе ООЕОЕ 5[2Е 10 !пС ша)п(1пС атас, спаг *агдч[!): ( !пС з.

Ь, 1, Тб. за, Ьусез. оп = 1; сбаг По[[ВОР 5[ЕЕ); /* буфер для исходящего файла */ зсгысс зосйаббг 1п спаппе1; /* содержит !Р-адрес */ /* Создать структуру адреса для привязки к сонету */ шешзеС(асбаппе). О, з1зеоГ(спаппе))): /* Нулевой канал */ спаппе1.з1п 1ашт1у = АР [ИЕТ: сбаппе1.з1п аббг.з аббг - Пвоп)(1ИАООЙ АИУ); сбаппе1.з1п рогС - Пбопз(5ЕЙЧЕЙ РОЙТ): /* Пассивный режии. Ожидание соединения */ з - зосйеС(АР 1ИЕТ, 50СК 5ТЙЕАН. [РРЙОТО ТСР); /* создать сокет */ т( (з<О] ТаСаТ("ошибка сокета"): зесзосйорС(з, 50[ 5ОСКЕТ, 50 йЕ05ЕАООй, (спаг *) аоп, з1зео((оп)): Ь - Ь!Пб(з. (зсгысС засхасбг ") аспаппе), з!зеот(спаппе1)): зт (Ь<О) Гаса)("Ошибка связывания" ); 1 - 11зСеп(з, ООЕОЕ 512Е); /* Определение разнера очереди */ 1Т (1<О) Раса)("Ошибка ожидания" ); /* Теперь сокет установлен и связан.

Ожидание и обработка соединения "/ ыП!1е (1) ( за ассерС(з, О, О); /* Блокировать обработку запроса */ 1Г (за<0) Га[а1("Ошибка доступа"); геаб(за, Ьо[, ВОР 5![Е); /* считать иня файла из сокета */ /* Получить и вернуть файл */ Гб орел(Ьы(. 0 йООИСЧ); /* Открыть файл для отсылки */ Элементы транспортных протоколов 663 тт (тс < О) твта1("Овкбкв открытия файла"): нлт1е (1) ( Ьутев геаб(тс$, Ьцу, ВОР 51ЕЕ); т( (Ьутев <- 0) Ьгеак; нгтгбе(вв, Ьц(. Ьу(ев): с1ове(Ы): с1ове(за): /* Читать из файла */ /* Проверка конца файла */ /* Записать байты в совет */ /* Закрыть файл */ /* Разорвать соевинение */ Кстати говоря, такой сервер построен далеко не по последнему слову техники.

Осуществляемая проверка ошибок минимальна, а сообщения об ошибках реализованы весьма посредственно. Понятно, что ни о какой защите информации здесь говорить не приходится, а применение аскетичных системных вызовов У)ь)1Х вЂ” это не лучшее решение с точки зрения независимости от платформы, Делаются некоторые некорректные с технической точки зрения предположения, например, о том, что имя файла всегда поместится в буфер и будет передано без ошибок. Система будет обладать низкой производительностью, поскольку все запросы обрабатываются только последовательно (используется один поток запросов).

Несмотря на эти недостатки, с помощью данной программы можно организовать полноценный работающий файл-сервер для Интернета. Более подробную информацию можно найти в (Бг(уепз, 1997). Элементы транспортных протоколов Транспортная служба реализуется транспортным протоколом, используемым между двумя транспортными сущностями. В некоторых отношениях транспортные протоколы напоминают протоколы передачи данных, подробно изучавшиеся в главе 3. Все зги протоколы, наряду с другими вопросами, занимаются обработкой ошибок, управлением очередями и потоками. Однако у протоколов разных уровней имеется и много различий, обусловленных различиями условий, в которых работают эти протоколы, как показано на рис. 6А.

На уровне передачи данных два маршрутизатора общаются напрямую по физическому каналу, тогда как на транспортном уровне физический канал заменен целой подсетью. Это отличие оказывает важное влияние на протоколы. Маршрутизатор Подсеть Маршрутизатор Физический канал связи а б рис. 6.4. Окружение уровня передачи данных (а); окр)скение транспортного уровня (б) 664 Глава 6.

Характеристики

Тип файла
DJVU-файл
Размер
11,16 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6488
Авторов
на СтудИзбе
303
Средний доход
с одного платного файла
Обучение Подробнее