Главная » Просмотр файлов » В. Столлингс - Современные компьютерные сети (2-е издание, 2003)

В. Столлингс - Современные компьютерные сети (2-е издание, 2003) (1114681), страница 167

Файл №1114681 В. Столлингс - Современные компьютерные сети (2-е издание, 2003) (В. Столлингс - Современные компьютерные сети (2-е издание, 2003)) 167 страницаВ. Столлингс - Современные компьютерные сети (2-е издание, 2003) (1114681) страница 1672019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Кьосв5ет. ИВЕ[. ИН[[, Дье1 (1шеоц() — О) // вывести сообщение для пользоввтеля е1ье С11епв ь - вссерт<ь. ИН[[. ИНЕЕ): Таким образом, процесс должен периодически опрашивать операционную систему с помощью функции ье(есг(), пота< сокет не будет готов к операции ввода-вывода. В отличие ат случая блокирующего запроса, при длительной неготовности сокета процесс, выполняющий функцию ье(ест(), сможет возобновить работу, когда истечет период ожидания функции ье(ее!(), но такое решение неэффективна. Опрос в цикле функций ье(ест) или эссер!О приводит к напрасному расходованию ресурсов центрального процессора. Б.Б. управление программой во время выполнения 731 Асинхронный ввод-вывод Лучшим решением является использование асинхронного ввода-вывода (то есть, обнаружив активность ввода-вывода секста„операционная система немедленно информирует об этом процесс и таким образов! избавляет его от необходимости настоянного опроса).

В оригинальной операционной системе ВЯ) Шч(1Х для этого используются функции ь!даю[(алО и ЕспЩ). Альтернатива опросу состояния сокета с помощью функции ье(ее[О заключается в там, чтобы позволить ядру операционной системы информировать приложение о событиях при помшци сигнала 51610. Для этого необходимо установить процедуру обработки этого сигнала с помощью функции ыдас[(апО. В следующем примере программы сокеты не использтуются. В нем просто показано, как установить процедуру обработки сигнала, Данная процедура перехватывает ввод символа прерывания работы программы клавишами СЕт(+С, устанавливая обработчик сигнала для 5161НТ (сигнал прерывания) с помощью функции ь!две[топ(): уота свтсп еггог(слаг >еггогнеььвце): // для обработки ошибок готб 1пте!тцрт51цпв1Нвп<йег(!пт ьюпа1Туре): // обрабОтка сигнала !Ьтегг тп! яш1п(1пт згдс, сЬвг дгдч[1) ( ьтгцст ь1дагттоп ьзпб1ег: // спецификация сбработчикв сигнала // использовать функцию !птеггцрт5тдпа1нвпгпег<) в качестве обработчике Ьвп<пеглв Ьвпгдег = !пгеггцр(51дпа1Напб1ег; // создать ивску дгя всех сигналов 11 <ь<дт!1)ьет<дьзпб)ег,ьв шаьи) < О) сатсЬ еггог("рвбота функции ь1дП 11ьет<) завершилась неуспешно ): // установить обрвботку сигналов прерывания 1/ (в!даст!оп(5!6!ит, дьвпспег.

0) < О) свгсЬ еггог("роботе функции ьшвс<1оп() завершилась неуспешно "); гог(::) ранье(); ы приостановить лрогрвнну до тех пор, пока не будет получен сигнал ехтт(0), чо<б !пьеггцртьтдпа1Нзпб)ег(!пт ьщпв1Туре) ( рюптт("прерывзние получено. прогрвннв остановгенадп"): ех1т(!). Флаг ГА5ТМС должен быть установлен равным дескриптору сакета с помощью функции Еспб(О. Сначала мы уведомляев! операционную систему о нашем желании установить новую процедуру обработки для сигнала 51610 с помощью функпт!'1 732 Приложение Б. Сокеты Б.7.

удаленное выполнение консольного \у!паоьнш-приложения 733 в!оас(!опО, Зателт мы заставляем операционную систему предоставлять сипталы текущему процессу с полтощыо функции Гспс((). Этот вызов гарантирует, что среди всех процессов, имеющих доступ к сокету, сигнал передается именно текущему процессу (или группе процессов). Затем мы снова используем функцикт Гспт((), чтобы задать флаг состояния равным тому же дескриптору сокета для асинхронного флага ГА5УИС. Следующий фрагмент программы с использованием дейтаграммных сокетов следует данной схеме (для ясности все детали пропущены): тпт шатп() // создат~ сокет для передачи/присна дейтаграни // инициализировать адресную структуру сервера // связать с локальнын адресом // установить обработчик сигнала 51610 // создать маску дпя всех сигналов тг (з(ртт)1зет(Впало)ег.за шаьк) < О) // вывести сообщение об ошибке и завершить работу // сброс флагов Папб1ег.за Паря - О: тт (зтбастлоп(51610.

Дбапб)ег, 0) < О) П вывести аюбщение об ошибке и завершить работу // нан пушно владеть соиетон. чтобы получить сообщение 5!6!О (т (гспг)(в яосхем Г 5ЕТОыд, Оетртб()) < 0) // вывести сообщение об сшибке и завершить работу // организовать асинхронный ввод-внвод и доставку сигнала 51610 ! Г ( !сот)( в восвет . Г 5ЕТГ! .

ГА5тщС ( 0 щОПВСОСК) < О) // вывести сообщение об ошибке и завершить работу Гог (;;) ранье П. В операционной системе %'шс(отнв функция ве(ес(О не реализована. Для запроса уведомлений о сетевых событиях используется функция В5ЯАвупс5е1ес!О. Эта функция требует, чтобы диналтическая библиотека Вв 32./)11 посылала сообщение окну, идентифицируемому дескриптором окна ЬВП((: щ5ААзупс5е1есы50скет зос/тес. н!ПО лмтт(, нпвщпео тпс мчвр.

)опч 1енелп Тип 5ОСКЕТ определен в файле ьн(п вас(т.Ь. Дополнительную инфорлтацию по типам данных операционной системы %"шс(оьнз можно найти по адресу Ьгсрт// п(вт)п.)п!сговоГ(.солт/!!Ьгагу/рвб)т/рв()(тгеГ/(уре Ва((В.Ьь)п. Параметр зосйег представляет собой дескриптор со кета, Ь )(/ппт — дескриптор окна, иМяК вЂ” сообщение, а /Еаепг, как правило, представляет собой |(одвт всех событий, а которых операционная светел(а должна уведомлять окно, объединенные оператором логическога ИЛИ. Вот примсрынекотарыхкодовсобытий:ГО СОИИЕСТ(соединенисустановлена, ГО АССЕРТ (готовность к установке соединсния), ГО КЕАО (готовность к чтешпа).

ГО Вк1ТЕ (готовность к записи), ГО СС05Е (соединение закрыто). Вы мажете включить следующий фрагмент программы с использованием потоковых сокетав в покааанпую выше программу или в свое собственное приложение (детали снова спущены): // сообщение для асинхронного уведоиления й)еттпе ьивй (ЩН 05ЕВ « 4) // сокет восвет з уше создан и привязан к инени // прослушивать запросы на установку соединения ! Г ()тзтеп(зосксс з 3) == 50скет еддбд) // вывестн сообщение об пвибке // и завершить работу после чистки // получить уведомление о входящеи запросе на установку соединения тт (щ5Авзупс5е)ест(з. Пнщб, инвч. ГО АССЕРТ) — Я)СКЕТ ЕЙВОД) О вывести сообщение об ошибке // и завершит~ работу после очистки е1зе Ы принять входящее соединение Дополнительные сведения по вопросам асинхронного ввода-вывода можно получить в книге Е)опа!тоо ап(1 Са!нег( <Т1те Росйес Сп(г)е (о ТСР/1Р ЗосЬегз— С н/егз)оп» (для Т)Ь)1)() н по адресу Ьттр://и(щлш.)п((р.солт/восйей а также в книге Вой С/п)пп «*нт/шс(оы/з Васйеыз Ь!е(тнагй Ргодгаштп)п)(» (для ТА/шс(отнз) и по адресу Ь(!рт// ы/ылл,вос(те!в.соп)/.

Б.7. Удаленное выполнение консольного МИпбо~йГв-приложения Простые операции с сакетами могут использоваться при решении задач, которые трудно решить другилти способами. Например, с помощью сакетав возможно удаленное выполнение приложения. Ниже приводится пример такой программы'. С помощью двух программ, использующих сокеты, локальной и удаленной, консольное Ъ'!пс(отнз-приложение (файл с расширением .ехе) переносится с локального хоста на удаленный хост. Затем зта программа выполняется па удален!гав! хосте, после чего ее выходные данные (вЫоат) возвращаются на локальный хост. ' В написании двух сдвдутощпх программ принимали участие Кон Кристапс<и (Коп С!тпвтгвпьол) и Карл С. Лятмгг сс (Квг1 5.

Ехтяхвв) с кафедры кибер инин кп упине!кш етв Юхтког! Флориды (Пир // тнннтн.сяле.няЬх)н/-с!тпвтеп/(гю!я). 7З4 Приложение Б. Сокеты Б.у, Удаленное выполнение консольного т)Я<Обои/в-приложении 7ЗБ Локальная программа <5<б1о.п> <зтб)ТЬ.Ь> <5<г!п9.Ь> Ъплбоыв.ль <ТОП<).пь <зув\51ат. Ь> <!о.бь для рг!П11() дпя ехтт<) ДПЯ ЯЕВСРУ() И всгсру<) для 5)еер() и Кдпзаех для констант файлового ввода-вывода для констант файлового ввода-вывода для орел(). с1азе() и еоП ) <Ыелпе РОЯТ МОМ 1050 П произвольный непер порта для сервера №бейпе МАХ [15ТЕМ 1 // иаксииальная длина очереди №беттпе 512Е 266 // разиер буфера переноса в байтах чотб ва!П(тп< агдс, спаг *агдчП) ибйО инегвтопйеяцевтеб = мдкеидй0( 1. 1): // функции и5А ЬБ/ОПТА изаОа1а; П структура данных Елпзаей АР1 цп5!Япеб <п< 5[гост зосдаббг тп втгцст зосйаббг тп цпв!Япеб слдГ цпзтдпеб тпт от~5!Япн1 тпд зсгцс< Ьовтепт 51гцс[ !и аббг спаг !п1 цпзтдпеб тпт 51ГОС< заойаббг 1п 51гцс1 тп аббг ГЕТОТЕ 5; гевоте аббг! зегчег ай1г; Ебп быт[51/Е1, (Ь: 1епя<Ь; *ЬО51; асЫге55: ПО51 паве[2561; абб! <еп: 1оса1 5: 1оса) аббг; гевате тр аббг; П проверка синтаксиса коиандной строки тг (аг9 !-4) ( рг!птП" '"'" ОШИБКА - долина бить '1оса1 (Ьозг) (ехе/11е) (аост!1е)'<п"): Рг!Пт/Г' где аозт - иия хоста *или*!Р-адрес 1п ): рг!Огт<" хоста.

на которои работает геяюге.с. 1п")-, рг!Птт(" ехе<М 1е — икя файла для удаленного загуска, а 1п"); рг!п1((" оц1П 1е - икя локального файла вывода <п"): ех!1<1)! // инициализировать итп5асй МБА51аг<цр(иуегв!Опйеяцезтеб. Бчвадата): // скопировать иия хоста в Ьозг паве зтгсру<бозс паве. агдчП)): // найти хост по иненн Ьазт = дегпозгаупаве(агдчШ ): т№ <Ьозт == МОЕ[) ( РГ!П1((" ь"* ОШИБКА — 1Р-аДРЕС ДЛЯ 'Жв' НЕ Найлви <П, ЬО51 ПаПЕ" >; ехтгП); №1пс1цбе №тпс1цбе №!Пс1цбе №!ПС1цбе №!Пс)цбе №!ПС1ыбе №1пс1цбе П нуина // нувно // нувно // нувно // нуино // нувна // нувно // дескриптор удаленного сонета // удаленный Интернет-адрес // Интернет-адрес сервера П буфер длв переноса фаЙла // описатель файла // разиер перенесенных данных // структура для детпоз<аупвяе() l! структура дпя Интернет-адресов // строка для иненн хоста // длина Интернет-адреса П дескриптор локального сокета // локальный Интернет-адрес // удаленный 1Р-адрес и скопировать 4-байтовый 1Р-адрес клиента в структуру аббге55 ввясру<ааббге55.

Пазт П аббг, 4). /! создать сокет для удаленного хоста гвязте 5 - заойет(АЕ 1МЕТ, БОСХ Бтйедн, О); // заполнить адресную инфорнацию удаленного (серверного) саке!а П и соединиться с сыидающни серверои зегчег ай1г.сбп тавт1у - АР 1МН; // используеиое сенейство адресов 5еГчеГ абб1 .5тп рог< - Птопз<РОКТ МОМ): П испопьзуеный нонер порта зегчег аббг.51п ай1г.з аббг = 1пес п[оа<аббге55)): П 1Р-адрес саппесс<гекю<е 5, <вгпкс засйай1Г ")$5егчег аббг, зтгеот<вегчег атЫг)); !/ открыть и прочитать *.ехе файл т П (<Ь - орел(агдч[21, О ЯСОМ[У ( О 01ддйч. 5 1йЕАО ) 5 1ьй!ТЕ)) == -1) рг!Гт.т(- ОшиБИА — не удается открыть файл 'Жз' тп".

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

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

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

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