C# Занятие №27
Межсетевое взаимодействие
Адрес компьютера в сети
IP адрес
IP адрес
Порт
Работа портов
Итого
Забитые адреса
Сетевое взаимодействие в C#
TCP
TcpListener
TcpClient
Реализация «сервера»
TcpListener
Запуск слушателя
Приём входящих подключений
Этап 2
TcpClient
Запуск второго проекта
Передача и приём информации
Передача сообщения от сервера клиенту
Приём сообщения со стороны клиента
Итого, TCP:
UDP
UdpClient
Итого
Схема
Метод для потока, который будет слушать порт
ЗАДАНИЕ
Ссылки на почитать
3.94M
Категория: ИнтернетИнтернет

Сетевое взаимодействие. TCP

1. C# Занятие №27

Сетевое взаимодействие. TCP. UDP. Одновременная работа
нескольких проектов.
Хорищенко Евгений Константинович

2. Межсетевое взаимодействие

• Способ соединения между собой нескольких компьютеров для
обмена информацией
• Информация передаётся в виде пакетов, у которых в заголовке
описан адрес, куда нужно этот пакет доставить, «обратный»
адрес отправителя, и ещё какая-нибудь техническая информация.
В теле пакета уже лежит информация
2

3. Адрес компьютера в сети

• В основном – характеризуется двумя вещами: IP адрес и порт
3

4. IP адрес

• Уникальный сетевой адрес узла в сети (компьютер, телефон,
чайник, микроволновка)
• Не может быть одинаковым для двух разных устройств
• Представляет из себя четыре числа в диапазоне [0-255],
например – 172.189.2.190
• При каждом новом подключении в интернет – генерируется
новый (как правило)
4

5. IP адрес

5

6. Порт

• Целое неотрицательное число, передаваемое в пакете с
информацией
• Используется для определения процесса-получателя на
компьютере
• Всего на компьютере – 65 535 портов
• Каждое сетевое приложение «арендует» себе какой-либо порт на
время работы
• Порт для получения информации и для отправки – разные!
• Может быть открыт и закрыт (настройками файрволла ОС)
6

7. Работа портов

7

8.

8

9. Итого

• У каждого компьютера есть свой адрес.
• На каждом компьютере есть 65532 порта, которые могут
принимать\отдавать какую-либо информацию в сеть
9

10. Забитые адреса

• 127.0.0.1 – так же известен как localhost – зарезервированный
адрес для «себя»
• 192.168.*.* - адрес «домашней» сети
10

11. Сетевое взаимодействие в C#

• Для отправки пакетов на удалённые компьютеры в C#
реализованы два протокола:
• TCP
• UDP
11

12.

12

13. TCP

• Гарантирует доставку сообщений
• Держит постоянное подключение
• Разделяется на две части: клиентскую и серверую
• TcpClient и TcpListener соответственно
13

14. TcpListener

• Является «сервером»
• Задача – «слушать» порт на компьютере, ожидать подключения
клиентов, и дальнейшая работа с ними как с объектами TcpClient
14

15. TcpClient

• Отправляет сообщения
• Принимает сообщения
15

16. Реализация «сервера»

• Создайте консольное приложение в Visual Studio
16

17. TcpListener

• При создании сообщаем ему IP адрес, который он должен
слушать, и порт
17

18. Запуск слушателя

• В момент запуска – «занимает» собой порт
18

19. Приём входящих подключений

• Поток будет заблокирован до момента приёма первого клиента
19

20.

20

21.

21

22. Этап 2

• Реализация «клиентского» приложения
22

23. TcpClient

• Не забудьте подключить using System.Net.Sockets
23

24. Запуск второго проекта

24

25.

25

26. Передача и приём информации

• Информация передаётся в виде массива байтов
• С# предоставляет удобные механизмы для конвертации
информации в массив байт и обратно
26

27. Передача сообщения от сервера клиенту

27

28. Приём сообщения со стороны клиента

28

29.

29

30. Итого, TCP:

• Требуется постоянное подключение к серверу
• Есть разделение на «сервер» и «клиент»
30

31. UDP

• Нет надобности в использовании сервера – передаёт данные
сразу на удалённый узел
• Не гарантирует доставку сообщений конечному адресу
• Имеет всего один класс для работы - UdpClient
31

32. UdpClient

• Выполняет роль и «сервера» и «клиента»
• Умеет принимать и отправлять сообщения
• Когда находится в режиме «приёма» - блокирует собой поток до
тех пор, пока что-нибудь не примет
• При передаче информации – сообщаем – на какой адрес и на
какой порт она должна попасть
32

33.

33

34.

34

35. Итого

• Для установления «общения» между двумя компьютерами –
необходимо чтобы они знали «принимающие» порты друг друга,
и могли отправлять туда информацию
35

36.

36

37.

37

38.

38

39. Схема

• Поток №1:
• Читает сообщения с клавиатуры
• Отправляет их через sender
• Поток №2:
• Бесконечно слушает порт через
listener
• Печатает сообщения на экран,
как только принял их
39

40. Метод для потока, который будет слушать порт

40

41.

41

42.

42

43. ЗАДАНИЕ

• Переведите 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
English     Русский Правила