Программирование сетевых задач

Поделись знанием:
Перейти к: навигация, поиск

В области компьютеризации понятие программирования сетевых задач или иначе называемого сетевого программирования (англ. network programming), довольно сильно схожего с понятиями программирование сокетов и клиент-серверное программирование, включает в себя написание компьютерных программ, взаимодействующих с другими программами посредством компьютерной сети. Программа или процесс, инициирующие установление связи, называются клиентским процессом, а программа, ожидающая инициации связи, называется серверным процессом. Клиентский и серверный процессы вместе образуют распределенную систему. Связь между клиентским и серверным процессами может быть или на основе соединений (как например, TCP-протокол, устанавливающий виртуальное соединение или сессию), или без соединений (на основе UDP-датаграмм).

Программа, которая может функционировать и как клиент и как сервер, основывается на одноранговой связи.

Сокеты обычно реализуются библиотекой интерфейса программирования приложений (API), как например, сокеты Беркли, впервые представленные в 1983 году. Большинство реализаций основаны на сокетах Беркли, например, Winsock, представленный в 1991 году. Существуют и другие реализации API сокетов, например, Интерфейс транспортного уровня (TLI) на основе STREAMS.

Ниже следуют примеры функций или методов, обычно реализуемые библиотекой API:

  • socket() создает новый сокет определенного типа, идентифицируемый при помощи целого числа, после чего выделяет ему системные ресурсы.
  • bind(), как правило, используется на серверной стороне; ассоциирует сокет с адресной структурой сокетов, то есть определенным номером локального порта и IP-адресом.
  • listen() используется на стороне сервера; переводит TCP-сокет в режим прослушивания.
  • connect() используется на клиентской стороне; привязывает номер незанятого локального порта к сокету. В случае с TCP-сокетом, вызывает попытку установить новое TCP-соединение.
  • accept() используется на стороне сервера. Данная функция принимает полученную попытку создания нового TCP-соединения от удаленного клиента и создает новый сокет, ассоциированный с парой сокетных адресов этого соединения.
  • send() и recv() или write() и read() или recvfrom() и sendto() используются для отправки и получения данных к/от удаленного сокета.
  • close() вызывает освобождение системных ресурсов, выделенных сокету. В случае TCP, соединение завершается.


См. также

Напишите отзыв о статье "Программирование сетевых задач"

Ссылки

  • [beej.us/guide/bgnet/ Руководство по сетевому программированию от Beej]  (англ.)
  • [java.sun.com/docs/books/tutorial/networking/overview/networking.html Networking Basics] - основы работы сетей с точки зрения Java  (англ.)


Отрывок, характеризующий Программирование сетевых задач

Выйдя на двор, Мавра Кузминишна задумалась о том, куда ей идти теперь: пить ли чай к Васильичу во флигель или в кладовую прибрать то, что еще не было прибрано?
В тихой улице послышались быстрые шаги. Шаги остановились у калитки; щеколда стала стучать под рукой, старавшейся отпереть ее.
Мавра Кузминишна подошла к калитке.
– Кого надо?
– Графа, графа Илью Андреича Ростова.
– Да вы кто?
– Я офицер. Мне бы видеть нужно, – сказал русский приятный и барский голос.
Мавра Кузминишна отперла калитку. И на двор вошел лет восемнадцати круглолицый офицер, типом лица похожий на Ростовых.
– Уехали, батюшка. Вчерашнего числа в вечерни изволили уехать, – ласково сказала Мавра Кузмипишна.
Молодой офицер, стоя в калитке, как бы в нерешительности войти или не войти ему, пощелкал языком.
– Ах, какая досада!.. – проговорил он. – Мне бы вчера… Ах, как жалко!..
Мавра Кузминишна между тем внимательно и сочувственно разглядывала знакомые ей черты ростовской породы в лице молодого человека, и изорванную шинель, и стоптанные сапоги, которые были на нем.
– Вам зачем же графа надо было? – спросила она.
– Да уж… что делать! – с досадой проговорил офицер и взялся за калитку, как бы намереваясь уйти. Он опять остановился в нерешительности.
– Видите ли? – вдруг сказал он. – Я родственник графу, и он всегда очень добр был ко мне. Так вот, видите ли (он с доброй и веселой улыбкой посмотрел на свой плащ и сапоги), и обносился, и денег ничего нет; так я хотел попросить графа…
Мавра Кузминишна не дала договорить ему.
– Вы минуточку бы повременили, батюшка. Одною минуточку, – сказала она. И как только офицер отпустил руку от калитки, Мавра Кузминишна повернулась и быстрым старушечьим шагом пошла на задний двор к своему флигелю.
В то время как Мавра Кузминишна бегала к себе, офицер, опустив голову и глядя на свои прорванные сапоги, слегка улыбаясь, прохаживался по двору. «Как жалко, что я не застал дядюшку. А славная старушка! Куда она побежала? И как бы мне узнать, какими улицами мне ближе догнать полк, который теперь должен подходить к Рогожской?» – думал в это время молодой офицер. Мавра Кузминишна с испуганным и вместе решительным лицом, неся в руках свернутый клетчатый платочек, вышла из за угла. Не доходя несколько шагов, она, развернув платок, вынула из него белую двадцатипятирублевую ассигнацию и поспешно отдала ее офицеру.
– Были бы их сиятельства дома, известно бы, они бы, точно, по родственному, а вот может… теперича… – Мавра Кузминишна заробела и смешалась. Но офицер, не отказываясь и не торопясь, взял бумажку и поблагодарил Мавру Кузминишну. – Как бы граф дома были, – извиняясь, все говорила Мавра Кузминишна. – Христос с вами, батюшка! Спаси вас бог, – говорила Мавра Кузминишна, кланяясь и провожая его. Офицер, как бы смеясь над собою, улыбаясь и покачивая головой, почти рысью побежал по пустым улицам догонять свой полк к Яузскому мосту.