Рубрики
Без рубрики

Десять дней кода: задача 1

Задача-1 Дата: 03-OCT-20 Коды: TASS1_ARNABSEN1729 Оператор задачи Ping-Pong C … с меткой Hacktoberfest, Python, OpenSource.

TendaySofCode2020 (6 серии деталей)

Задание 1

Дата: 03-окт-20 Коды: task1_arnabsen1729

Постановка задачи

Клиенты пинг-понга

Сделайте 2 клиентских файла, которые отправляют данные друг другу, используя два разных порта. Нужно отправлять данные (например, «пинг»), а затем получить некоторые данные (например, «pong»). В то время как другой должен сначала получить данные, а затем отправить соответствующий ответ.

Сначала инициализируйте подключение к сокету и подключите его к различным сетевым интерфейсам, для тестирования вы можете использовать одно и то же имя хоста: localhost и разные порты, используя socket.gethostname (). Отправка данных выполняется с использованием метода sendto (). Он принимает в качестве аргументов, данные и адрес сетевого интерфейса как кортеж, содержащий имя хоста и номер порта. Приемные данные выполняются с использованием функции recv (); Требуется аргумент в пользу бафга, чтобы обозначить размер полученного пакета данных. P.S Также не забудьте кодировать и декодировать данные.

Мой подход

Для этой задачи будет достаточно базовых знаний о гнездах. @lugnitdgp Команда поделилась некоторыми ресурсами (я свяжу их внизу).

Я сделал два файла. client1.py и client2.py Анкет Client1 будет действовать как сервер. Так в client1.py , Я сделал класс для сервера (я знаю Это не нужно но Да Чистый код всегда предпочтительнее <3), и он имел основные методы, как описано здесь:

Addr, в этом() Серверная розетка Создайте объект сокета и начните слушать на ADDR и объявить токен отключения
никто accept_client () Conn, Addr Примите новое клиентское соединение и возвращает клиентский сокет и его адрес
Конн ,,,, recv_message () Данные, полученные как строка Получает сообщение от Client Socket Conn в кусках кусков и декодирует его в формате
Конн ,,,, send_resp () никто Отправляет закодированный ответ на Cont Conce Conce Conce, будьте по умолчанию IT OS Pong. Следует за кодированием, указанным в параметрах

Затем в основном органе Client1.py я создал объект сокета и следил за обычным порядком методов.

  1. разъем()
  2. связывать()
  3. Слушать()
  4. принимать()

Также я добавил токен Discon_msg что укажет, когда закрыть соединение.

Для client2.py Это очень базовый сценарий клиента. Я снова сделал клиент -класс, который имеет только три метода.

Addr, в этом() Инициализируют клиентские розетки и подключается к Addr
сообщение, Отправить сообщение() Отправить кодируемое сообщение в сокет подключенного сервера
Получите ответ от сервера (AKA Client1) в кусках кусков и декодирует его в формате и возвращает его recv_resp ()

Образец

Ресурсы

  1. https://docs.python.org/3/library/socket.html
  2. https://drive.google.com/file/d/17MDkLEWeBajEyqu-LzXZOhgxW9ZIUqv1/view?usp=sharing
  3. https://drive.google.com/file/d/1jaNf0lfPFdChh5KhM1nAlCHPgy6wTrnQ/view?usp=sharing

Спасибо @lugnitdgp для наставничества и руководства

TendaySofCode2020 (6 серии деталей)

Оригинал: “https://dev.to/arnabsen1729/ten-days-of-code-task-1-36io”