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

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

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

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

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

Доступность тога же номера порта для повторного использования другими прилажениялги определяется реализацией протокола ТСР. Такой парт будет находиться в состоянии ПИЕ)1/Я[Т в течение некоторого заранее определенного периода времени, как показано на рис, Б.1 для порта 1234.

Б.б. Потоковые и дейтаграммные сокеты Для передачи ориентированных на соединение надежных потоков байтов между машинами используются аскеты типа 5ОЕК 5[кЕАИ. [чак уже говорилось ранее, в некоторых случаях перед использованием сокеты должны быть соединены. В зтам случае данные передаются по двунаправленным потокам байтов, и гарантируется прибытие данных в правильном порядке. Сакеты типа ВОСК 06ВАИ (дейтаграммные сокеты) также поддерживают двунаправленный поток данных, но данные могут прибывать не в том порядке, в котором ани были отправлены, а также могут дублироваться (то есть не гарантируется сохранение порядка поступления данных и их уникальность). Дейтаграммные сокеты также не предоставляют надежной службы, так как данные могут быть потеряны.

Однако важно отметить, что сохраняются границы записей данных, если длина записей не превышает размера буфера пол1<тателя. В отличие от потоковых сакетов, дейтаграмлтные со кеты не требуют установки соединений. Таким образом, не нужно устанавливать соединение перед их применением. [!а рнс. Б.З показана блок-схема взаимодействгля сокетов. Если сравнить данную схему с потоковой Б.Б.

Потоковые и дейтаграммные соквты 727 моделью взаимодействия, можно заметить, чта здесь не используются функции йвгеп() н ассерго, а вместо функций вел()() и гесч() применяются функции вепгйо() и тесы(гашО. Рис. Б.З. Блок-схема взаимодействия дейтаграммных сокетов Пример клиентской программы 0РР /Иег1пе И1И // щм для и1пвосх и В50 для сокетов В50 //тпс1и1е <5ГФОЧМ> // нуино дпя рпп(П) Жпс1ОЦО <51гтпй.п> // нУИНО ДЛЯ ПВЯСРУО И 51ГСРУ() фтгпет И)Н (/1ПС1цбе члпцоив.п> П нуино для Итпвасй (/етя) т Г Ищет В50 ф1пс1иое <вув/гуров.п> // нуяио для идентификатодов, определяеных сишеной й)пс1цце <пес1пег/1п.ь> и нуино ддя шруктуры интернет-адресов йпс1ыое <агра/тпег.п> и нуыно для тпег пгоа() (/тпс1цце <5У5/5ОСИЕг.п> // нувно для воСИЕ(О Ьтпш ) и т. д.

Гипс1цое <Гсп11.П> [/1пс1цое спегЦЬ.Ь~ //епдтт /)Оегтпе РОВТ ИОИ 1050 // попер порта серведа фце/1пе 1Р АООВ "131.247. 167. 101" // 1Р-адрес сервера (фиксированный) чотй иатп(чо10) Ф1(ОЕТ ЩИ ИОРО ийег51опйеоцевгвд = МДИЕИОДШ!.1). // фУнкЦии И5Д И5ДОАТА нваОага; // фуннции И5А Фепси Г цпвтйпец тпт зегчег 5; // дескриптор сонета сервера 51гцст восяаццг тп вегчег абцг. // Интернет-адрес сервера сдаг оцг Ьц(11001: П выходной буфер для данных спаг тп Ьцт(1001: // входной буфер для данных 72З Приложение Б. Сокеты Бтй Потоковые и дейтаграммные сокеты 729 // создать сокет ьегчег ь = ьоскет(АЕ !иет. 5ССк 5тИЕди.

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

И» //!пс)цбе <агра/тпеы Ь» //!пс1цбе <ьуь/ьасиет.ь» //тпс)цбе «Гспт) Ь» (/!пс1цбе <петбб.п» (/епбт( // И1И дгя И1пьоск и В50 аля сокетов ВЯ) // нувно для ргтп(Т() // нувно для !вовс)у() и ьтгсру() // нувно дгя И!папок // нувно П нувно !/ нумно П нуино для идентификаторов.

определяеиих систеной для структуры Интернет-адресов для !лет птоа() для ьоскет(>. Ыпб() и т. л. !Ые/тпе Рбйт иОи 1050 // используеный манер парта (Ыет)пе !Р ЛРОИ "131.247.167.10!" // 1Р-адрес клиента чояб ца1п(чо1б) //!тает И!И П подовдать получения сосбцения аббг 1еп = ьтзеот(ьегчег асЫг); гесчтгов(ьегчег ь. Ул ЬЦТ, ь1зеот(тп Ьц().

С. (ьтгцст ьосйаббг *)Кьегчег асЫг. Каббг )еп). ИСЖО ичег51опйеццеьбеб = ИАКЕ$6РР(1.1); // Дпя фунКЦиЙ ИВА ИВАСАТА иьаРата: // для фуннций И5А /)спбтт // дескриптор сонета сервера // Интернет-адрес серверз /! Интернет-адрес клиента // длина Интернет-адреса // выходной буфер для данных // входной буфер для данных П счетчин циклов цпь10пеб 1гс ьегче! ти ьбгцст ьосиаббг 1п ьегчег аббг: ь(гост ьсскабб 1п с)1епт атЫг.

!п! дббг 1еп; слаг оць Ьц/ПСС>: спаг тп Ьцт(1001; 1опй (пс 1: /)!Убег И1И // инициализировать сокет И5/5(агбар(итога!опйеццеьтеб ВиьаОата): ((епбтт // создать сонет // АГ 1ИЕТ - сенейство адресов Интернета. а 5ССК ССЙАИ - дейтагранна ьегче~ ь = ьсскет(АЕ 1ИЕТ, 5ОСК РСИАИ, С): // заполнить адресной информацией структуру секста сервера ьегчег аббггип тавп 1у - АГ 1иГТ: // сеиейство адресов ьегчег аббг.ьы рагс = Птопь(РОЙТ Н>И): // попер порта ьегчег аббг.ь1п атыг.ь аббг = лтоп1(1МАОРВ лит>; // прослуыивать все 1Р-адреса Ыш>(ьегчег ь, (ьйгцст ьоскаббг *)Вьегчег аббг.

м геодьегчег атЫг)); // заполнить адресной инфориацией структуру сокета клиента с)1епт аббг.ь1п Гаяп 1У - АГ 1ИЕТ; П используеное сеиейство адресов с1!опт аббглип рагс - Ьтапь(рбйт ици). П используемый номер парта с)тепс аббг.ьтп аббг.ь аббг - !пет аббг( 1Р АРОИ): /! используеиый 1Р-адрес // оыидать получения сообцения от клиента асЫг 1еп - ь1хеодс1тепт аЫг); гесчтгов(ьегчег ь.

(п ЬЦТ. извод!и Ьцт), О, Ьтгцст ьтскаббг *)Кс>!еп( аббг. Касбг 1еп): // вывести полученное сосбценне рг(пСП "Полученное саобцение: 'ьь Ьп", тг Ьцт). /! цикл задервни. предоставляющий время клиенту Гог (1-0; !»» 5тер //5 ««' !/ отправить сообщение клиенту. "+1" позволяет включить // сиивол конца страни ЬЕПССОЬЕГЧЕГ Ь. Оцт Ьцт, ЬСГ1ЕП(ацт Ьцт) + 1). С. (ЬЬГЦСЬ Ьаокаббт ь)ВС11ЕПС аббГ. ьтзеодс11епт аббг)); П закрыть все открытые сокеты (/1/бе/ И)И с1оьеьоскет(ьегчег ь); Депо!/ Ф1/бе( ВВО с1оье(ьегчег ь); (/епбтт //!Гает И!И П очистить соне~ ИВАС1еапцр(): Фепбтт в ) ' В атой отроке несколько сыьгтак<ьтческнх сшибок.

Датвлвтъся, чта имел в виду автор, невовьтохтпо— Ллимеч. нврвв. ТЗО Приложение Б. Сокеты </1пс1цое <ьшшо.ь> // для ргштп) 01пс1цбе <ьуь/юцпв1.ь> // для ьшас(1оп() //!пс1цбе <питьем.Ь> // для ранье() иы 1е(с1!еп! ь = вссер(<ь. ИНИ.. ИОЕО > 0) // сброс флзгов Ьапб1ег.ьа П вдь = 0; Б.б. Управление программой во время выполнения Неблокирующие обращения к сокетам Но умолчанию сокет создается как блокирующий (то есть он не возвращает управления обратившейся к нему программе до тех пор, пока не будет выполнена вызываемая функция).

Например, если мы обращаемся к функции ассер[() сокета. процесс будет заблокирован, пока от клиента ие поступит запрос на соединение. В операционной системе П)ч(1Х есть две функции, позволяюпвие превратить блокирующий сокет в неблокирующий: !оса() и ье(есЦ). Функция тосЫ() облегчает управление вводом-выводом файла или сонета Затем с помощью функции де[ее[О можно определить состояние секста, то есть его готовность или неготовность к выполнению действия: // изменение блокирующего сосшяния сонета цпьтдпеб 1опц цпыосй = ТЙНЕ; // ТИНЕ для неблокируюцего. ЕЛ[5Е для блокирующего !ось!(ь.

Г!ОИВ10. Вцпв!оск): Затем периодически вызывается функция ассерЕ(): тт (с1<епт ь =- ЕШОВЕОВИХК) // ждать, пака не прибудет запрос на соединение от клиента, // тен врененен выполняя полезные действия е1ье // обработать поступивший запрос соединения // вывести сообщение об ошибке и прекратить работу Также можно использовать функцию ье(есЕО, чтобы опросить состояние сокета, как зто делается в следуюшел! фрагменте программы с использованием неблакируюшега сокета: гб (ье1ест(яшх беьсг > 1.

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

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

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

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