C#   Уроки программирования с нуля. Си-шарп для чайников   C#

Здравствуйте, гость!
Вход
Регистрация


Сетевое программирование в Си-шарп
Несколько следующих уроков будут посвящены теме сетевого программирования. Это достаточно большая область программирования, и для начала ее освоения необходимо разобраться с базовыми понятиями и терминологией.

Компьютерная сеть – это система компьютеров, или другого вычислительного оборудования, которые объединены между собой теми или иными каналами связи, и могут обмениваться между собой информацией.

Сети классифицируются по такому признаку как архитектура. Наиболее распространенная архитектура «клиент-сервер», о которой многие не раз уже слышали.

Рассмотрим аналогию архитектуры клиент-сервер в ситуации из жизни. Человек идет в магазине за хлебом. В данном случае клиентом выступает покупатель, который говорит, что хочет купить хлеб (запрашивает некий ресурс, услугу). Продавец в этой ситуации выступает сервером, который обрабатывает запрос (какой продукт, деньги заплатили, или нет), и выдает ответ (хлеб если заплатили, или до свидания). Покупателей много – клиентов, и всех обслуживает один продавец – сервер.

Физически клиентом и сервером могут выступать компьютеры и программное обеспечение. Обмен данными между клиентом и сервером осуществляется посредством сетевых протоколов (http, ftp, pop3, smtp, tcp, udp…).

Протокол – сводка правил и методов, по которым будут передаваться данные между узлами сети. Протокол обеспечивает способ передачи информации и обработку ошибок.

Протоколы делятся на уровни по своему назначению. В современных сетях используется так называемый стек протоколов TCP/IP. Он имеет 4 уровня. Стек означает то, что протокол, который располагается выше по уровню, не знает и не имеет необходимости знать, как именно осуществляется передача данных протоколом нижнего уровня, используя механизм инкапсуляции.

#УровеньПримеры протоколов
4Прикладной (Application layer)HTTP, SMTP, FTP, DNS
3Транспортный (Transport layer)TCP, UDP
2Сетевой (Internet layer)IP
1Канальный (Link layer)Ethernet, IEEE 802.11 Wireless Ethernet


Работу стека протоколов можно описать следующей ситуацией. Один начальник компании хочет передать посылку другому начальнику компании. Первый сообщает второму, что пришлет посылку, и второй одобряет. Эти договоренности начальников происходили посредством протокола наивысшего уровня в стеке. Дальше первый начальник сообщает секретарю, что надо сделать и этот секретарь связывается с секретарем второго начальника и говорит «ожидайте курьера, который доставит посылку». Общение секретарей было уже протоколом ниже в стеке. Дальше секретарь вызывает курьера и говорит, что и куда доставить, и тот уже на самом нижнем уровне стека осуществляет передачу данных. Добраться до второй компании он может разными способами - пешком, такси, на рабочем автомобиле. В этой ситуации секретарю (протоколу выше) без разницы, как доберется курьер до места назначения, также как и начальнику не нужно ничего знать про то, как секретари договорятся доставить посылку (может другим способом, не курьером). Это демонстрирует нам механизм инкапсуляции.

Если брать сеть Интернет (WWW), то в качестве клиента выступает веб-браузер, а сервером является веб-сервер. Веб-сервер - это компьютер, на котором установлено программное обеспечение, которое реализует необходимый серверный функционал. В интернете обмен данными происходит посредством протокола HTTP (HyperText Transfer Protocol) – протокол передачи гипертекста. Вы вводите в строке браузера имя страницы, браузер делает запрос к веб-серверу, веб-сервер обрабатывает запрос и возвращает страницу.

Электронная почта (email) – еще один способ передачи данных (электронных писем) между компьютерами, объединенными в сеть. Есть сервер электронной почты, и его клиенты. Когда клиент1 отправляет почту клиенту2, она посредством протокола SMTP отправляется на сервер. Клиент2 же получает почту с сервера используя протокол POP3.

Следующие несколько уроков будут посвящены работе в сети с протоколами прикладного уровня, что на данном этапе обучения будет наиболее полезно и актуально.

В платформе .Net для работы с сетью существует пространство имен System.Net;

Это пространство имен предоставляет классы для работы со многими протоколами передачи данных, классы описывающие запрос (WebRequest) к серверу, ответ (WebResponse), класс веб-клиента WebClient, который обеспечивает обмен данными с ресурсом, по заданному URI, классы IP адреса, авторизации, «куков» и многое другое. Более детально всё это будет рассмотрено в соответствующих уроках.

Сетевое программирование очень широкая тема, тут парочкой уроков не обойдешься, и всё я охватывать пока не собираюсь, но самое актуальное и необходимое будет рассмотрено.
Понравилась статья? Подпишись на рассылку и узнавай первым о новых уроках по почте!


Поделиться с друзьями:
02 мар 2015 21:37
Динара 09 дек 2015 07:23
Спасибо Вам!!!!!! Это очень актуальные темы!!!!!

Максим 20 май 2015 19:15
Алексей
---
Добавил номер карты

Алексей 20 май 2015 12:03
Да, кстати, автор, если есть возможность сделайте возможность кидать денюжку просто с карты, а не через вэб-мани или киви. Я бы прямо сейчас отправил, а то кошельки заводить лень и до терминала идти тем более) А таких как я - большинство)

Алексей 20 май 2015 11:52
Народ, всем нравятся уроки , но не забываем благодарить автора не только на словах. Если уроки будут приносить автору денюжку - он будет им уделять больше времени) и мы быстрее получим долгожданное продолжение. Да и вообще приятно когда твой труд приносит плоды))) Так что не стесняемся)

Алексей 24 мар 2015 17:27
Я любитель-новичок в c#, с чем-то знаком. с чем-то только предстоит познакомиться. Зашёл сюда чтоб уточнить понятие полиморфизма и увлёкся. С увлечением читаю первые главы, хотя многое из материала уже знакомо, но он изложен настолько живо и доступно, что хочется познакомится заново:-)
Заметил что 33 урок посвящён сетевому программированию. Для меня это сейчас актуально. Очень надеюсь на продолжение. Спасибо автору!

Andriy 22 мар 2015 14:26
Максим, спасибо за такие полезные уроки!
С нетерпением жду продолжения.

Денис 19 мар 2015 10:59
Замечательный сайт.
Огромное вам спасибо.

Мне, как человеку не изучавшему программирование, но последнее время интересующимся этим - очень полезная информация.
Очень нравится что статьи очень подробные и какие-то цельные. При этом без лишней информации.

Виталий 07 мар 2015 16:22
Спасибо за урок! Очень жду продолжение!

Дядя Витя 06 мар 2015 17:56
Заинтриговали, негодяи.

AlexWolf 05 мар 2015 16:58
Снимаю шляпу перед вашим талантом все так разжевывать, чтобы понятно было всем. Все очень интересно и понятно. Большой плюс в том, что вы подсказываете, что и где человек не так понял. В книжках бывает не понятно, все ты правильно понял или нет. =) Знал бы, что программирование то же можно считать творческим занятием, обратил бы внимание на него более подробно гораздо раньше.
Еще раз, спасибо!

Максим 04 мар 2015 22:02
Dimon
---
Все хотят сразу всего, но на это нужно много времени. Ничего конкретного пока не обещаю, но переставать писать уроки не собираюсь.

Dimon 04 мар 2015 21:22
Максим, спасибо за продолжение проекта
очень ждем ASP :)
ADO будет?

Максим 04 мар 2015 17:59
Дмитрий
---
Я решил, что сначала нужно пройти основы именно программирования. А формы это лишь визуальная часть программы. И кто сказал, что знание того, как написать программу "будильник" на формах важнее знания сделать простой сайт на ASP.NET, или приложение под мобильные платформы? Пока я стараюсь затрагивать темы, которые универсальны для большинства сфер применения языка

Дмитрий 04 мар 2015 13:44
А почему сеть раньше форм? Простую программку типа будильника можно написать без сети, но нельзя без форм, странно как-то.

Firik 03 мар 2015 10:36
Максим, мы все очень ждем)

Максим 03 мар 2015 09:23
Firik
---
Постараюсь скоро написать, не так как с другими. Понимаю, что этот урок обязывает выложить следующий в ближайшие сроки)

Гаррет 02 мар 2015 22:36
Когда я в прошлом году простился на работу джуниором в Крайтек, мне дали тестовое задание 'написать простенький tcp echo server и клиент". Вопрос с работой тогда решился несколько иначе, но был бы признателен, если вы рассмотрите подобное в рамках следующих уроков: для собственного развития пытался разобраться, находил примеры, но что-то не сложилось. А у вас отлично получается объяснять через простое сложные вещи

Firik 02 мар 2015 22:35
А следующий урок скоро?


Добавить комментарий:

Имя (обязат.)
E-mail (обязат., не публикуется)


Для вставки ваших программ пользуйтесь кнопкой "исходный код"
Вёрстка сайта с нуля

Уникальный Видеокурс!

"Научись верстать сайты и заработай на этом!"

Получить видеокурс

Подпишись на курс по программированию, и узнавай первым о новых уроках!

RSS подписка Страничка Вконтакте Мы в Twitter

Ошибка в тексте? Выделите ее мышкой и нажмите Ctrl+Enter
Поблагодарить автора: Номер карты (ПриватБанк)
5168 7572 4170 8660
WebMoney
R372544961915 U685637142028 Z999792764387
Наверх
Система Orphus