Главная » Просмотр файлов » Искусство программирования на Си

Искусство программирования на Си (984073), страница 70

Файл №984073 Искусство программирования на Си (Искусство программирования на Си) 70 страницаИскусство программирования на Си (984073) страница 702015-07-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Но, по крайнсй мере, мы мояьнвдочп(яосхгс[,2); жсм разработать сервер и клиент под управлением хпх дапс[ов[1пх и) гехпгп ВХ1Т ЯОССВВВ) 'чч]пс]охчя. Поэтому бсз дальнсйших предисловий давайгпьсгп (хпт)(п * (гапс[() / (1.0 е (йопЬХа]ВАНО ИАХ))); Нс так уж и плохо, нс правда лиу Но опять жс, этот ]АЛО()ОВ/в программа сервера [пх аазп(1пх агсс, сЬаг *агяч[]) код в определенной стспсни нспсрсносим.

Ни эта проКак видно из листинга 22<К %шс[озня обычно всс делазпя яосх10=0; грамма, ни програкзхса для ссрвсра никогда нс компилист по-свосму. Наличие функний зчЯАЯ(аг(вр() и сЬаг паса[255)=(0]1 руются в типичном компиляторе под управлснисм ХУБАс[сапврΠ— это, возможно, наиболсс очсвидныс яьгпсг Ьояьапт «Ьп; %[пбохия. Как жс это сделать в %]пс[охчя? яхгпсх яосхас[пг хп СЬе1г аде[с; отличия от кода [)[Ч!Х. Кроме того, %шс]охчя-всрсия использует различные заголовочные файлы н имеет огромягапс](С[па(НОЬЬ]]; нос количество различных типов — БОСКЕТ, АУОИ) и т.

д., — которые мы должны использовать для своего Мсмсл амднрменнанраеробонко. нроерам роаанискоммуникоционнылсредин Часта О( Гпава 22 ЯОСХВТ печ посв; япппдочп(воск 2); ООСКАООВ 1В пу аоог; геппгп ВХ1Т РА1ЬОВВ сЬаг баса[255) (О»1 ) сЬаг *епйр) г( ( 11япеп(яосЬ, ЯОВАХСОВВ) == ЗОСКВТ ВВВОВ) Р1ЬВ к( РО ( рг1п11("Опехресгеб еггог оп 11вГеп()(п ); сваг Р11епаае(РТЬВВАВВ ВАХ) = ОВРАОЬТ РТЬВ ВАВВ; ппв1дпей 1опд спггепсооеа1 = 0; ппя(дпей 1опд печГопа1 = 01 ЬТ(агдс с 2) ( чо11е(!Оопе) рг1пс(( Во Ше врес11(ей.

Оягпд 1 ав( (п", ( ОВРАОЬТ Р1ЬВ ВРОЯВ)3 11(0 1м СЬесЬРогпапа!яосЬ)) ) ( е1ве печ восЬ = ассерс(ясса, ВОЬЬ ВОЬЬ)' 1(печ васа == )ВЧАЬТО ООСКВТ) япгсру(Р11епапе, агдч[1)) ( ) рггпеу('Опехрессео еггог оп ассерс() 1п ); ) Тр = (ореп[Р11епапе, г ); аепвес(баса, О, в1хео( йапа); 11((Р ~м ВОЬЬ) ЬТ(гесч(пЕч воск, дага, я1яео( баса,о) 11(ВОЬЬ ) Тдепв(оаГа, я(хео( Оапа, (р)) ООСКВТ ВВВОВ) Дппа ииипезнные темато вские разде ы Мезкпзатформсннап разработка просрапмированискаизеникационнызсредств Часть К! Глава 22 Это могло бы быть намного хуже. Код 'зз)пс)оизя до- только с кодом сокста, но и со всей СзШ-концепцией СЬезг аддг.ягп аддг '((ЬР1К АООК)'Ье->Ь аддг 11яс); статочззо похож на код СЛк((Х, поэтому абстрактный йишс)озпя.

Это сделать не так просто. СЬе1г аддг.ягп роге = Ьсопя(1091); слой просматривается относительно легко. Но так бывает не всегда. Например, если мы написали прог ам- уу(пс)оетв-программа клиента и ора пвеС = соппесс(яосксд, (ЬРВОСЕАООК)АСЬегг аддгс му %шс)егия полностью в СС)( вместо консольного при- Теперь, когда мы увидели родную программу ТСР-сср- Няеос[ясгисс яосКаддг)); ложения, то слою выделения придется управляться нс вера, работаюшсго под управлением%юг)опия, влистин- з[ (плеС == ЕОСКЕТ ВККОК) гс 22.4 приведем программу клиента. ргзпСС( Еггог оп соппесс().1п'); Листинг 22.4. Исходный код для ТСР-клиента под управлением МЛп()оиия гесигп ЕХ1Т РА1ЬОКЕ; $1пс1иде <яед[о.а> $1пс1иде <всг1пд.Ь> ярк[пег(даса, $1и Вгапсь Ед", $1пс1иде <СЕве.Ь> (ипя1дпед 1опд)вапдов(10000), Капс1иде «КСпяосК.Ь> Каппов(100)); зпС Капдов(1пс и) пвеС = яепд(ясах[0, даса, ясг1еп(даса), О); ( ХЕ (пвес == ЕОСКЕТ ЕККОК) гесигп (зпс)(п * (гапд() з' (1.0 + (доиь)е)КАКО ИАХ))); ) рг1пСС( Егг оп яепд()1п ); кесигп ЕХ1Т РА1ЬОКВ; 1пС вази(зпе агдс, сЬаг *агди[)) ) Доааенитюы~ые тематинескиеразделы к 1 Часть О! б/емс~сеатфорл енналразработка нролримнированиекоммрниканионныксредств Глава 22 сЬаг баеа(255) (О); спаг "епбр", тр = Херес(Р)1епаее, г ) 11[тр )= ИОЬЬ) чоьб гпСЬапб1ег(ЬОС Бгя) ( 11(ИОЬЬ )н Свеее(баха, аьгеос баеа, [Р)) Листинг 22.5.

Использование препроцессорных директив в качестве инструглента переноса. $1пс1пбе <апбьо.ь> (1пс1пбе <пьб1(Ь.Ь> (1пс1пбе <втг1пО.Ь> Ф)пс1пбе <ахвпа1.Ь> Шбет И1ИЗ2 уьпс1пбе <ч1ппосЬ.Ь> Фе1пе ухпс1пбе <гуп/Сгее.Ь> О)пс1пбе <гуа/ае1есс.Ь> Рьпс1пбе <еуе/Сурег.п> $гпс1пбе <гуг/аосхеС.Ь> (гпс1пбе <пеп)пег/(п.Ь> Фепбьс Рбе(ьпе ОВРАОЬР РтЬВ ИВМВ аа1ее.баС чо1атьье г)О атоелс С боле; Р1ЬВ лтр) спаг Р11епаее[РЬЬВИПИВ МОХ) = ОКРЬОьт Р1ЬВ ИЬМК! ппазвпеб 1опр спггепссопа1 = О; ппеьвпеб 1опв печьота1 = О! 1((агвс < 2) ( ргьпст('Ио Ше прес)11еб.

Оггпк 1 Ха1 1п Окуьвьт Рььк иьмк); е1ае ( аьгсру(Р11епаее, агуч[1)! ° Дана«ннтк ямыс текат с« нас кнс ра»/сан Я1— ! ( Часть (М а/сэс»иатформсннак ра«рабат«а прскраммнрааанас каммлннкаянан«ассар»дата Глава 22 Еуредет всгисе СОРБ 1НРО Листинг 22.7. ОЬ((Х-версия библиотеки переносимых сокетов. ( (пе виану) /«Структурный аулы Нгпдоыв требует 1пге гп(о, а ОМ1И-нет. */ /» Бабпвотека переаосаммх сохетов СОРБ дпя ОМ1И «/ ) СОРЯ 1МРО; $(пс1иде "сира.Ь Еуреде( ат се СОНМБСТИОМ тоЫ СОРБ1пхе(СОРЯ 1НРО «р1п(о) гпс аабгевв 1епдЕЬ; ( аггисг аоскаббг гп ву айбг)- /* Суррогатная фувкцвя; функцноаапьвме аоамоквоста ве требуется ОМ1И. «/ вггисе восхаддг 1п ГЬе1г аддг; гееигп; аггисг Ьовгепт 'Ье; ) поск1еп Е вгп айке; 1пе Яоскег; (пг СОРББеевовевуваве(СОМВЕСТ10Н «Соппесе1оп, сЬаг *Воат) ) СОМНКСТ10М; ( гпг Яеви11»0; Эта стр)ктура СО(Ч)ЧЕС»(О)Ч является ключом для ного кода слоя приложения Инкапсуляиия данных гй((соппесезоп->Ье=дегвовеЬупаме(вовс]] == НО(Ь) абстрактного слоя Она содерх ит экземпляры всех сокстов Беркли в структуре означает, что, хотя основ( Вевп1Е = 1; структур данных, которые потребуются для О)х!Х-вер- ная пар;шигма сокстов остается, мы больше не зависим сии кода.

Это нужно для тогск чтобы можно было пе- ог различных аспектов сокетоп Беркли на слое прило- гегогп Веви1С; ремсстить люб)ю трассировку сокстов Г>срк.п« из исход- жения. Дтзазнитезкные тематинеекиераздкеы ! Часть и! гпг СПРБВесиРгоп(СОИИБСТ1ОИ 'Соппесс1оп сваг *Бага, а1ге С г1ге) ( 1пг Вевп11 = О; гс(тест(гоп(Соппесс1оп->Босхег паса, язге, О, (вггпсг воскаппг ']ссоппасг1оп->гье1г аппг асоппесс1оп->аппгегг 1апчгп) == -1) ( Ваяп11 = 1 ) геспгп Вевп11 зпс СОРББепдто(СОИИЕСТ1ОИ *Соппесгзоп сваг *паса, агге С гага) ( 1пг Вевп11 О; 11(ваппсо(соппесс(оп->пасхах, Мемет1атБорменнакразрисовка: Ч т и; аниекоимэникационныксркдсте ! Глава 22 Листинг 22.8.

Заголовок для )))()пс(о%5-версии библиотеки переносимых сокетов 11(апас СОРБ Б Ояа11пе СОРЯ Н !зпс1пде <ягдагд.п> !(пс1ппа <Г1па.п> О(пс1ппе игпаосх.п Возможно, самым однозначным аспектом этого набора функций является то, что некоторые из них нс выполняют никаких действий. Зачем зкс тогда написаны эти кажущиеся бссполсзнычи функции? %(лдоти5-всрсия кода трсбуст выполнения действий запуска и очистки, даже если для 1)Ь))Х-всрсии в этом нот необходимости.

Тск! нс л!снсс, слой приложения будет обращаться к каким- либо функциям запуска и очистки, даже если для (з(Ч! Х такис лсйствия нс требуются, и эти функции-манекены оказываются самым простым решением. Другой важный момент состоит в том, что нскоторыс функции в СЫР8 вообще нс используются нашим приложсниск!. Они предназначены для использования в ЫЭР-приложениях. Хотя мы всс-таки оставили для них место, на %сЬ-сайгс издательства "ДиаСофт" вы найдете программу-сервер преобразования температуры и соответствующую программу-клиент, которые используют абстрактный слой СЫР8.

%)пг)оки5-порсни этих двух файлов похожи, но, сстсствснно, нс идентичны. В листинге 22.8 показана %!пс)оги5 вс)х.ия спря.)з. Доназнизнезнныо тоиатинеп иоразделы ! ! Часть Н! Л(онслзат!Лорионнанразработна нтниромчиронание комчунинационзетородстн Глава 22 Листинг 22.9. ))))(пс(оввв-версия библиотеки переносимых сокетов. ( /н Бвбпвотека перевосвавх сокетов СОРБ дпя Нспйоея *l 1пс Невп11 = О. Соппесггоп->аййгеяя 1епцГЬ = вгкеот(всгнсс воскаййг кп); (гпс1пйе соря.Ь" 11(зсоппесктоп->Ье) ( то(й СОРБ1аус(СОРЯ 1ИРО *ртп(о) Соппессгоп->пу аййг.вкп таак1у = АР 1ИЕТ; Соппесккоп->ау аййг.вкп аййг.я аййг Аййгеяя! р1пто->Регятоппео)певгей = НАЕЕНОИО(1, 1); СоппесС(оп->ву аййг.вгп ротс = Ьсопв(рокс)! ) е1яе упс СОРБЯГ Гпр(СОРЯ 1НРО *ртпсо) Соппессгоп->ГЬезг аййг.ягп (авк1у = АР 1ИЕТ; Соппессгоп->СЬекг аййг.в(п аййг НБАОАТА еваоаса; *([ЬР1И АООЕ)нСоппессгоп->Ье->Ь аййг 1гяг); ИБАягаггпр(р1п(о->тетя(опеез)пеясей, кчвапага); Соппесггоп->СЬе1г аййг.я(п ротс = Ьсопя(ротс)! 11(чваваса.чтегвуоп != р1пто->уегя1опяеопеякей) СоппесСуоп->Яосхес = восхег(АР 1ИЕТ, БОСЕ ОСЕАН, 0); гс(СоппесСЕоп->Яоскег == 1ИРАОЛО БОСЕЕТ) Ееяп1Г = 1; ( Веяп1С = 1; геспгп Иевп1Г; ) геспгп яеяп1Г! ) Мелки э и т форм еннил ра эрабиткиэ нрэыраилтриэт ни« к «минн ик ац шэн ныл кркдстк Дитынитеэ«ныл темити«елки«разделы $ « Чзсчв а! Глзез 22 гпГ СОРЯЬссеРгсоппесгьоп(сокккстьоа «Иечяоскегэ Еево11 = 1; СОИИЕСТ10И «ЯегчегСоппес11оп) ) ( г;1 Кевп11 = 01 гегпгп Кевп11; «Иечяоскет = «яегчегсоппесг(оп; > Иеыяоскег->Босгеь = вссерс(яегчегсоппесг>оп->яоскеГ, ИОЬЬ, ИОЬЬ>; гпг СОРБЯЬогкочпС11епгСоппесьзоп(СОИИЕСТ10И «Соппесйьоп, эт(И Яоскеь->Я Еег =- 1ИЧЕЬ)О ЯОСЕКт) гпг БЬосэ)ачптуре) ( ( Кевп)Ь = 1; 11(яьпгдоыптуре .= соря яаотооии кесеьче вв БЬоскочптуре .= СОРБ ЯаотООИИ яЕИО) геспгп Кево11; ( ) ЯЬпскочпТуре = СОРБ БаОТООИИ ВОТВ; (пь Соряаесч[СОИИЕСТ10И «Соппесгзоп, вьогоочп(соппесььоп->яоскеь, БЬпЫочптуре) 1 сЬвг «йвгп, вгве 1 в«ге) геьпгп О; > зпь Кево11 = О )" 11(гесч(соппесг(оп->яосгеь, гпг СОРяС1евппр(СОРЯ 1ИРО *Соре)пто> Овгв, (1пг)в>ге, Ю) == яОСККт ЕККОК) ( ( ИЯАС1еаппР(); Кево11 = 1; геьпгп О; > ) Глава 22 Ш Донскзннтекьные темат ические разделы Мсксл ~атформеннак разработка.

нрограммирониние ко клуни ационнык средстн Часть (и — т! $ ( ( СОРБ 1ИРО Свря1п1о = (0)З рггатг( сап'г ь1пб().зп )1 геьогп ЕХ)т РА1ЬОКЕ; СОИИЕСт1ОИ Бегчегеоппессгоп = (О»1 СОИИЕСт(ОИ СоппессзоптоСЬЬепг = (0»; 11(0 З= СОРБЬтвьеп(веегчегСоППЕс11оп)) сЬаг баса]255) (О)' ( сЬаг *епбр; рг1а11("Опехрессеб еггог чи11е са1)тпд 11вьеп().1п"); Р)ЬЕ *(рр СОРЯЯЬптбочп(йеегчегсоппесс(оп, СОРЯ ЯНОТООИИ ВОТН)з сьаг Рз1епаве(Р(ЬЕИАИЕ ИАХ] = ОНРАОЬТ Ртье ИАИЕ; гетпгп ЕХ1Т РА1ЬОКЕ~ ппя1дпеб 1опд соггепьтога1 = О; опвздпеб 1опд печсоса1 0; чьг 1е ( Обо пе ) з1(аг с < 2! ( д ) гт(0 != ООРБсьесхРогпага(вяегчегсоппесг(оп)) ( рггпс(( Ио 11»е прес»1(еб.

Овзвд 1 "Хв1 1п", н(0 != сОРБАссергсоппесггоа(всоппесгзоптос1зепг, ОЕРАОЬТ Р1ЬЕ ИАИЕ)~ ВяегчегСоапестзоп)) ( е1ве рг1пст( Опехрессеб еггог оп ассерс() »п"); ( е1ве вьгсру(Р11епаве, агдч]1]); ( веввег(баха, О, взвео1 баса)1 Дони ~нот ел нные тем а те теекие разде зы $Щ )! Часть [И сОРББьиебимп(сс1хепесоппесе1оп, СОРБ Бкотооии Ботв) Еи Кктт БОССКББ; Мезкпзенпдпрмеппппразрадотко п)ыераммиропониекомчлпп.ииионнытередотп ффффф Глава 22 ЙЙЛЙ Листинг <2.11. Межплатформенное приложение-клиент, использующее библиотеку СОР5. зг(0 Г= СОРБкест(ас1(епгсоппесг(оп, баеа, яххео1 баСа)) акпс1ибе <агб(о.Ь> ( )1пс1ибе <агб1зЬ.Ь> ргзп11( Опехрессеб еггог оп гест()тп ); ((пс1ибе <аггхпд.Ь> ) рггпс1("Кесегтебз Ва1п , баса); (зпс1ибе "сира.Ь" хпс Вапбоа(1пг и) ( ) гееигп ([пе)(п ' (гапб() з' (1.0 + (боиьке)клио илх)))) об этом вполне от четливое прелставзение Наиболее Резюме важный урок, который можно извлечь из этой главы, гпг аагп(гпг агдс, сЬаг еагдт[)) амми[) этой главе ыли раскр б ыты некоторые возможности вообще не имеет ничего обшего с сетевым прогр .

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

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

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

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