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

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

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

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

рис. Б.1). Если приложение лля соединения выбирает тот же номер порта, может возникнуть следующая ситуация. Когда это удаленное приложение вызывает функцию солпесЬО, локальное приложение предполагает, что существующее соединение все еще истивно, н рассматривает запрос на установку входящего соединения как попытку дублирования существующего соединения. В результате возвращается код ошибки (чч5/() ЕЕОЫЫКЕГ05ЕО. Лля каждого активного сонета опе- 722 Приложение Б. Сакеты Б.4.

Элементы сокетов г 23 Коды ошибок Выполнение всех обсуждавшихся ранее операций с сокетами может завершиться неудачей. В программировании считается хорошим стилем сообщать код возвращаемой ошибки, Большая часть этих кодов ошибок предназначена для тога, чтобы помочь разработчику в процессе отладки протраммы, а некоторые коды ошибок также будут отображаться для пользователей. В среде ЪИпс(отчз все встзвращаевтые коды ошибок определены в файле ч/[пдос((.Ь. В операционных системах семейства 1ЛУ[[Х определения кодов ошибок содержатся в файле дос)сеЬ.Ь.

Коды ошибок тк/шс(аьчз можно получить из оригинальных кодов ошибок ВЯЗ путем добавления к последним 10000, а обозначения ошибок — добавлением префикса УУ5А к названиям, принятым в Во() П[ь(1Х. Например: + имя в ЪИпс(оьчд — УУ5АЕВРЯОТОТ; + имя в ВЯз — ЕКРкОТОТ; + значение в ьЧ[пс(аучв — 10041; + значение в ВБЕ) — 41. Существует несколько ошибок, специфичных для % [пс(оытд, отсутствующих в [)[У(1Х: + У/5А5У5ЫОТВЕАОУ (10091). Возвращается фунтсцией У/5А5тат[цр(). Сообщает а неготовности сетевой подсистемы.

+ УУ5А)/Ейб[ОТ50РРО[[ТЕО (10092). Воавращается функцией УУ5А5[ат[цр(). Указывает, что [)[.[. не поддерзкивает данное приложение. + У/5А)УОП[УП[А[[ХЕО (10093). Возвращается лктбой функцией, кроме УУ5А5[аг[црО, если успешного выполнения функции УУ5А51ат[црО еще не была. Ниже приводится пример программы с обработкой ошибок: №!Убег И1И №тпс1цбе <в(бто.п> №(пс)цбе итпвоск.п> №!пс)цбе <всб)(Ь.Ь> №епб1( // для грг1птт() // для И5Д6е1[ввтЕггог() // для ехтщ ) №т Обе[ В50 №тпс!цбе <зтсяо.п> // для Грпп1П) и реггог() №тпс1цбе <я(41)Ь,Ь> // для ех11() №епш г чотб свссл еггог(спвг * ргобгвш швч) ( спвг егг бевсг[12В1: // для хранения описания ошибки 1пт егг: егг = И5А6ес[ввтЕттог() т рационная система полдерживает счетчик ссылок.

Обращение к функции с1оде() уменьшает на единицу значение счетчика сакета, указанного в качестве аргумента, Об этом важно помнить, если один и тат же сакет используется несколькими процес- и л свми. В следующих подразделах будет приведено несколько примеров программ. заполнить буфер описвниен ошибки тт (егг -= И5ЛИО ОАТЯ) зсгсру(егг бевсг, "И5ЛХО Одтл ( 11004) Звпрвшиввеиое иия найдено. но в базе донник ОИ5 для нето нет денных."): тт (егг — И5дИО йЕООУЕИУ) вь ору(егг бевсг.

'ИВЛИО йЕЕОУЕИУ (11005) Это Фатальная сшибка."), 11 (егг — И5дтйу ДВА1И) Пример клиентской программы ТСР/! Р Эта тсттиентская программа, инициируюшая соединение, получает от сервера одно сообщение, а затем прекращает работу. После получения сообщения программа посылает подтверждение серверу; №бемпе И1И // ЫМ для Итпзоск и 050 для В50-сокетов №тпс)цбе <втб1о,п> // нушно для ргтп1П ) №(пс)цбе <втгтпО.Ь> // нуино для келеру() и втгсру() №тгбет И1И №тпс)цбе <итпооив.ь> // нутпо для и1пвосх №епсн 1 №1/се[ В50 №тпс)цбе <вув/(урез.ь> // пушно для идентификаторов.

определяеных систеной №тпс1цбе <петтпе1/1п.п> // несбходиио для с~рук~уры Интернет-адресов №!пс)цт)е <вув/восве[.Ь> П требуется для восхес(), [Ипщ) и т. д. №тпс)цс)е «вгрв/тпе(.ь> // нуя но для тпес псов() №1пс1цбе <тспщ .Ь> №тпс)цбе <пе[ОЬ.П> №епш т №беттпе Райт МД( 1050 // нокер порта сервера №беыпе 1Р ДООй "131.247. 167.101" // 1Р-влрес сервера (Фиксированный) чотб яш1п(чотб) №ттбет ЩИ иОРО иуегюопйеццез1еб - мдкеь)ОИО(1,1); // функции и5д И5ЛОАТД иввОвгв; // функции И5д №епгд Г /! дескриптор сокетв серверз // Интернет-адрес сервера // выходной буфер для донных П входной буфер для данных цпв10пеб тп1 зегчег з: з1пкт восхвббг тп зегчег вббг: спдг оцс быт[1001: спвг тп Ьцт[1003; №тщеГ щн // инициализировать Ишясд И5451агсцр(ичегдтопйеццев1еб.

ЕыввОвтв), №епб(1 Гргтп1((в(беггу"Хвт дв)п". ргобгвш явр. егг бевсг): ех(1(1); ) Вы можете расширить список ошибок, используемых в ЪУ[пс[оть в-приложении, если заглянете на сайт ЬЬ[рт//ьиитц.дос((е[д.соп). 724 Приложение Б. Сокеты Б.л. Элементы оокетое 725 // создать сонет зегчег в = зосКЕС(АГ 1МЕТ. ВОСК 5ТВЕАИ. 0); Фг !! дескриптор сонета сервера // Интернет-адрес сервера // дескриптор сонета клиента // Интернет-адрес клиента // !Р-адрес клиента // длина ИнтернЕт-адреса // виходной буфер данных // входной буфер данных цпв10пеб тпт зегчег з: в(гост зоскаббг 1п вегчег аббг; цпзтйпеб тпс с1!еюс зс втгцсг зосйасбг 1п с)!епт аббг; зтгцст тп аббг с1!епг 1р аббг: !п( аббг 1еп; спаг оц( Ьцг(1001: спаг 1п Ьыт(1001: /)ттбет И)и // инициализировать Итпвосй ИВА5таг(ыр(иуегз!опаеццевтеб.

КиваОа(а): Г/епб! Г // закрыть все открытые сонеты (/1(бет И(ц с1ояевоскет(зегчег з); Г/епб! Г /Гт Гбет В50 с1озе(вегчег з): ()епб!Г /)тубе! И1И // очистить ьлпзоск ИВАС1еапор(), /Г гб!Г /! заполнить адрес сокета сервера и соединиться с ояедающин // соединения серверои. Функция соппесс() заблокируется 5егчег аббг.зю Гащ!1у - АР 1ИЕТ; // сегейство адресов 5егчег аобг.втп рог( = Ыопз(РОВ) ИОИ); // нокер парта 5егчег аббг.мп аббг.з аббг = тпет аббгПР АООВ): // !Р-адрес Соппест(вегчег з, (зтгцст ьосваобг ")Взегчег аббг.

втсеойзегчег аббг)): // погучить данные с сервера гесйвег(ег з. 1п Ьцт. з!геонтп Ьцт). 0): ргтпСГ('йесе1чеб Ггоя зегчег бата = 'Кз' )п . 1п Ьц(); // послать данные на сервер зсгсру(оцс ьцт. "иеьвайе — с1!еп( то вегчег"): зепйзегчег з. оис Ьыг. (втг1еп(оцс ЬцГ) + 1). О): Пример серверной программы ТСР/1Р Все, что делает следующая серверная программа, пассивно ожидающая соединения, — это передает сообщение клиентской программе, работающей на другом хосте. Она создает сокет и ожидает от клиента входящий запрос на обслуживание через этот единственный сонет.

Когда запрос удовлетворен, серверная программа прекращает работу: (/бе(!ле щы // ИГЫ для Итпзоск и В50 для сокетов В50 д!пс1обе <5(йо.п> !! нувно для рг!птй ) д1пс1ыбе <втппй/Ь> // нувно для щеясру() и в(гсру() //! Гбет ИГИ //!пс1цбе <и!полив.п> // нувно для Итпвоск Г/епб! Г Г/тубе( ВЯ) О!пс)цбе <зув/суров.ь> // нувно для идентификаторов. определяеиых систегой етпс)цбе <петтпе(мп,п> !! нужно для структуры Интернет-адресов йтПС1обе <агра/!пес.б> !/ нувно для тпес птоа() //!пс1обе <вуя/зоскет.л> l/ нувно для воскет(), ьтпй ) и т. д.

))!пс1ыбе <Гспт1 ь> //тпс1цбе <пегбб.п> Г/епб!Г Г/бегтпе РОйт ицн 1050 /( произвольный номер порта для сервера (Гс)е(!пе ИАК с)5тем 3 // наксииальная длина очереди овидания соединений чотб яею(чотб) //!Гбет И)И ИООО иуегз1опйещцезтаб = ИАКЕИОЙО(1. 1): // дЛЯ функцИй ЬВА ИВАОАТА изаОаса: l/ для функций ИВА (/епд! Г // создать секет // АР 1ИЕТ - сенейство адресов Интернета, а 50СК 5ТВЕЛН - поток вегчег з = восйет(АЕ 1ИЕТ, 5ССК 5ТОЕАИ. О): // заполнить структуру адресной инфориацией сокета и привязать секет !! описание структури воскаббг !и сн в итпзсск.п вегчег аббг.в!п Гает)у = АР 1ИЕТ: (/ используеиое сеиейство адресов вегчег аббг.в1прогс - Ь(опз(РОВТ ИОИ); /( используеный попер порта вегчег аббг.зю аобг.в аббг - Ьгоп1 ПРАВОВ АМТ); // лрининать запросы ото всех О 1Р-адресов Ьти)(зегчег з, (втгцст зоскасбг ")Кзегчег а/УЗг, в!зеоГ(вегчег аббг)); /! скидать соелинения (ИАх с15тет! — иаксинальная длина очереди) 1!зтеп(зегчег з.

ИАХ С15ТЕЙ): // принять запрос соединения. Функция ассерс() заблокируется. а затеи вернет управгение // с заполненной структурои с1тепт аббг ай)г )еп - в! Кео((с)!епь аббг); с1!епе з - ассерт(вегчег з. (з(гост воскаббг *)Кс1тепт аббг. Ваббг 1еп): О закопировать 4-байтовый 1Р-адрес клиента в структуру 1Р-адресов // описание структуры зосйаббг 1п си. в юпзосК.Ь щессру(йс1!епс !р аббг Кс1!опт асбг.зтп аббг.в аббг, 4); // вывести сообщение о тон. что запрос принят рюпгГ("запрос принят!1! 1Р-адрес клиента = дв порт = гб тп". !пес птойс1тепт !р аббг). птолз(с)!епт аббг знп рог()): // передача сообщения клиенту зтгсру(оцс ьцт, "Сообщение от сервера клиенту "); зетйс1!епт з, оцт Ьцг, (зтг1еп(оот Ьцт) + 1), 0); // получить данные от клиента гесч(с)!епс в. !п Ьцт.

ЮтеоП1п Ьцй, 0); рппст("полученные от клиента дайяне - 'дз'тп' 1п ьцт); 726 Приложение Б. Сокеты // закрыть все открытые сонеты (/тле/ И1И с105е5осйег(вегчег 5); с1озевосйемс11епг 5): Вепш г Ф1щет В50 с1ове(вегчег 5); с!ове(с1тепт 5); Фелюг Клиент Сервер воойе1() Ф Ьюл() Фтще/ И1Н // Очистить И1п50сй И5/(0)еапцр(); Уепц1т ) вялого()/теоч(/опт() велта о()/тесы(топча О)ове() для (/ЫО( или О)овевосмет() для ъч)пцовв с(ове[) для НЬДХ или О1омвоокег() для )Ядпцовв //1/бег ШИ // инициализидовать сокет ИВД55агбыр(ив(ег51опйецце51ец, йивавага); (/епц1/ Приведенный пример не очень реалистичен. Чаще всего серверные приложения содержат бесконечный цикл и способны принимать несколько запросов.

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

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

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

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