Similar presentations:
Сетевое взаимодействие. TCP
1. C# Занятие №27
Сетевое взаимодействие. TCP. UDP. Одновременная работанескольких проектов.
Хорищенко Евгений Константинович
2. Межсетевое взаимодействие
• Способ соединения между собой нескольких компьютеров дляобмена информацией
• Информация передаётся в виде пакетов, у которых в заголовке
описан адрес, куда нужно этот пакет доставить, «обратный»
адрес отправителя, и ещё какая-нибудь техническая информация.
В теле пакета уже лежит информация
2
3. Адрес компьютера в сети
• В основном – характеризуется двумя вещами: IP адрес и порт3
4. IP адрес
• Уникальный сетевой адрес узла в сети (компьютер, телефон,чайник, микроволновка)
• Не может быть одинаковым для двух разных устройств
• Представляет из себя четыре числа в диапазоне [0-255],
например – 172.189.2.190
• При каждом новом подключении в интернет – генерируется
новый (как правило)
4
5. IP адрес
56. Порт
• Целое неотрицательное число, передаваемое в пакете синформацией
• Используется для определения процесса-получателя на
компьютере
• Всего на компьютере – 65 535 портов
• Каждое сетевое приложение «арендует» себе какой-либо порт на
время работы
• Порт для получения информации и для отправки – разные!
• Может быть открыт и закрыт (настройками файрволла ОС)
6
7. Работа портов
78.
89. Итого
• У каждого компьютера есть свой адрес.• На каждом компьютере есть 65532 порта, которые могут
принимать\отдавать какую-либо информацию в сеть
9
10. Забитые адреса
• 127.0.0.1 – так же известен как localhost – зарезервированныйадрес для «себя»
• 192.168.*.* - адрес «домашней» сети
10
11. Сетевое взаимодействие в C#
• Для отправки пакетов на удалённые компьютеры в C#реализованы два протокола:
• TCP
• UDP
11
12.
1213. TCP
• Гарантирует доставку сообщений• Держит постоянное подключение
• Разделяется на две части: клиентскую и серверую
• TcpClient и TcpListener соответственно
13
14. TcpListener
• Является «сервером»• Задача – «слушать» порт на компьютере, ожидать подключения
клиентов, и дальнейшая работа с ними как с объектами TcpClient
14
15. TcpClient
• Отправляет сообщения• Принимает сообщения
15
16. Реализация «сервера»
• Создайте консольное приложение в Visual Studio16
17. TcpListener
• При создании сообщаем ему IP адрес, который он долженслушать, и порт
17
18. Запуск слушателя
• В момент запуска – «занимает» собой порт18
19. Приём входящих подключений
• Поток будет заблокирован до момента приёма первого клиента19
20.
2021.
2122. Этап 2
• Реализация «клиентского» приложения22
23. TcpClient
• Не забудьте подключить using System.Net.Sockets23
24. Запуск второго проекта
2425.
2526. Передача и приём информации
• Информация передаётся в виде массива байтов• С# предоставляет удобные механизмы для конвертации
информации в массив байт и обратно
26
27. Передача сообщения от сервера клиенту
2728. Приём сообщения со стороны клиента
2829.
2930. Итого, TCP:
• Требуется постоянное подключение к серверу• Есть разделение на «сервер» и «клиент»
30
31. UDP
• Нет надобности в использовании сервера – передаёт данныесразу на удалённый узел
• Не гарантирует доставку сообщений конечному адресу
• Имеет всего один класс для работы - UdpClient
31
32. UdpClient
• Выполняет роль и «сервера» и «клиента»• Умеет принимать и отправлять сообщения
• Когда находится в режиме «приёма» - блокирует собой поток до
тех пор, пока что-нибудь не примет
• При передаче информации – сообщаем – на какой адрес и на
какой порт она должна попасть
32
33.
3334.
3435. Итого
• Для установления «общения» между двумя компьютерами –необходимо чтобы они знали «принимающие» порты друг друга,
и могли отправлять туда информацию
35
36.
3637.
3738.
3839. Схема
• Поток №1:• Читает сообщения с клавиатуры
• Отправляет их через sender
• Поток №2:
• Бесконечно слушает порт через
listener
• Печатает сообщения на экран,
как только принял их
39
40. Метод для потока, который будет слушать порт
4041.
4142.
4243. ЗАДАНИЕ
• Переведите UDP чат – на формы• Примерный вариант дизайна
43
44. Ссылки на почитать
• https://metanit.com/sharp/net/4.1.php• https://metanit.com/sharp/net/4.2.php
• https://metanit.com/sharp/net/5.1.php
44