WEBMASTER

Купить диплом

 

Ruby

Программирование на языке Ruby(книга Х.Фултон, Глава 18.)

Гла­ва 18. Се­тевое прог­рамми­рова­ние

Ес­ли тор­го­вец в раз­го­воре с ва­ми про­из­но­сит сло­во «сеть», ско­рее все­го, он же­ла­ет всу­чить свою ви­зит­ную кар­точку. Но в ус­тах прог­раммис­та это сло­во обоз­на­ча­ет элек­трон­ное вза­имо­дей­ствие фи­зичес­ки уда­лен­ных ма­шин — не­важ­но, на­ходят­ся они в раз­ных уг­лах ком­на­ты, в раз­ных рай­онах го­рода или в раз­ных час­тях све­та.

Для прог­раммис­тов сеть ча­ще все­го ас­со­ци­иру­ет­ся с на­бором про­токо­лов TCP/IP — тем язы­ком, на ко­тором нес­лышно бе­седу­ют мил­ли­оны ма­шин, под­клю­чен­ных к се­ти Ин­тернет. Нес­коль­ко слов об этом на­боре, пе­ред тем как мы пе­рей­дем к кон­крет­ным при­мерам.

Кон­цепту­аль­но се­тевое вза­имо­дей­ствие при­нято пред­став­лять в ви­де раз­личных уров­ней (или сло­ев) абс­трак­ции. Са­мый ниж­ний — ка­наль­ный уро­вень, на ко­тором про­ис­хо­дит ап­па­рат­ное вза­имо­дей­ствие; о нем мы го­ворить не бу­дем. Сра­зу над ним рас­по­ложен се­тевой уро­вень, ко­торый от­ве­ча­ет за пе­реме­щение па­кетов в се­ти — это епар­хия про­токо­ла IP (Internet Protocol). Еще вы­ше на­ходит­ся тран­спортный уро­вень, на ко­тором рас­по­ложи­лись про­токо­лы TCP (Transmission Control Protocol) и UDP (User Datagram Protocol). Да­лее мы ви­дим прик­ладной уро­вень — это мир telnet, FTP, про­токо­лов элек­трон­ной поч­ти и т.д.

Мож­но об­ме­нивать­ся дан­ны­ми не­пос­редс­твен­но по про­токо­лу IP, но обыч­но так не пос­ту­па­ют. Ча­ще нас ин­те­ресу­ют про­токо­лы TCP и UDP.

Про­токол TCP обес­пе­чива­ет на­деж­ную связь меж­ду дву­мя компь­юте­рами (хос­та­ми). Он упа­ковы­ва­ет дан­ные в па­кеты и рас­па­ковы­ва­ет их, под­твержда­ет по­луче­ние па­кетов, уп­равля­ет тайм-а­ута­ми и т.д. Пос­коль­ку про­токол на­деж­ный, при­ложе­нию нет нуж­ды бес­по­ко­ить­ся о том, по­лучил ли уда­лен­ный хост пос­ланные ему дан­ные.

Про­токол UDP го­раз­до про­ще: он от­прав­ля­ет па­кеты (да­таг­раммы) уда­лен­но­му хос­ту, как буд­то это дво­ич­ные поч­то­вые от­крыт­ки. Нет ни­какой га­ран­тии, что дан­ные бу­дут по­луче­ны, по­это­му про­токол на­зыва­ет­ся не­надеж­ным (а, сле­дова­тель­но, при­ложе­нию при­дет­ся оза­ботить­ся до­пол­ни­тель­ны­ми де­таля­ми).

Ruby под­держи­ва­ет се­тевое прог­рамми­рова­ние на низ­ком уров­не (глав­ным об­ра­зом по про­токо­лам TCP и UDP), а так­же и на бо­лее вы­соких, в том чис­ле по про­токо­лам telnet, FTP, SMTP и т.д.

На рис. 18.1 пред­став­ле­на и­ерар­хия клас­сов, из ко­торой вид­но, как ор­га­низо­вана под­дер­жка се­тево­го прог­рамми­рова­ния в Ruby. По­каза­ны клас­сы HTTP и не­кото­рые дру­гие столь же вы­соко­го уров­ня; кое-что для крат­кости опу­щено.

Рис. 18.1. Часть и­ерар­хии нас­ле­дова­ния для под­дер­жки се­тево­го прог­рамми­рова­ния в Ruby

От­ме­тим, что боль­шая часть этих клас­сов пря­мо или кос­венно нас­ле­ду­ет клас­су IO. Сле­дова­тель­но, мы мо­жет поль­зо­вать­ся уже зна­комы­ми ме­тода­ми дан­но­го клас­са.

По­пыт­ка до­кумен­ти­ровать все фун­кции всех по­казан­ных клас­сов за­вела бы нас да­леко за рам­ки этой кни­ги. Я лишь по­кажу, как мож­но при­менять их к ре­шению кон­крет­ных за­дач, соп­ро­вож­дая при­меры крат­ки­ми по­яс­не­ни­ями. Пол­ный пе­речень всех ме­тодов вы мо­жете най­ти к спра­воч­ном ру­ководс­тве на сай­те ruby-doc.org.

Ряд важ­ных об­ластей при­мене­ния в дан­ной гла­ве во­об­ще не рас­смат­ри­ва­ет­ся, по­это­му сра­зу упо­мянем о них. Класс Net::Telnet упо­мина­ет­ся толь­ко в свя­зи с NTP-сер­ве­рами в раз­де­ле 18.2.2; этот класс мо­жет быть по­лезен не толь­ко для ре­али­зации собс­твен­но­го telnet-кли­ен­та, но и для ав­то­мати­зации всех за­дач, под­держи­ва­ющих ин­терфейс по про­токо­лу telnet.

Биб­ли­оте­ка Net::FTP так­же не рас­смат­ри­ва­ет­ся. В об­щем слу­чае ав­то­мати­зиро­вать об­мен по про­токо­лу FTP нес­ложно и с по­мощью уже име­ющих­ся кли­ен­тов, так что не­об­хо­димость в этом клас­се воз­ни­ка­ет ре­же, чем в про­чих.

Класс Net::Protocol, яв­ля­ющий­ся ро­дитель­ским для клас­сов HTTP, POP3 и SMTP по­лезен ско­рее для раз­ра­бот­ки но­вых се­тевых про­токо­лов, но эта те­ма в дан­ной кни­ге не об­сужда­ет­ся.

На этом за­вер­шим крат­кий об­зор и прис­ту­пим к рас­смот­ре­нию низ­ко­уров­не­вого се­тево­го прог­рамми­рова­ния.

18.1. Се­тевые сер­ве­ры

Читать далее

БЕСПЛАТНО!
Получить бонус