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 я создал объект сокета и следил за обычным порядком методов.
разъем()
связывать()
Слушать()
принимать()
Также я добавил токен Discon_msg
что укажет, когда закрыть соединение.
Для client2.py Это очень базовый сценарий клиента. Я снова сделал клиент -класс, который имеет только три метода.
Addr, | в этом() | Инициализируют клиентские розетки и подключается к Addr |
сообщение, | Отправить сообщение() | Отправить кодируемое сообщение в сокет подключенного сервера |
Получите ответ от сервера (AKA Client1) в кусках кусков и декодирует его в формате и возвращает его | recv_resp () |
Образец
Ресурсы
- https://docs.python.org/3/library/socket.html
- https://drive.google.com/file/d/17MDkLEWeBajEyqu-LzXZOhgxW9ZIUqv1/view?usp=sharing
- https://drive.google.com/file/d/1jaNf0lfPFdChh5KhM1nAlCHPgy6wTrnQ/view?usp=sharing
Спасибо @lugnitdgp для наставничества и руководства
TendaySofCode2020 (6 серии деталей)
Оригинал: “https://dev.to/arnabsen1729/ten-days-of-code-task-1-36io”