Задание №1
Задание
Реализовать клиентскую и серверную часть приложения. Клиент отсылает серверу сообщение «Hello, server». Сообщение должно отразиться на стороне сервера. Сервер в ответ отсылает клиенту сообщение «Hello, client». Сообщение должно отобразиться у клиента.
Обязательно использовать библиотеку socket
Реализовать с помощью протокола UDP
server.py
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_socket.bind(("127.0.0.1", 8080))
server_socket.settimeout(0.5)
try:
while True:
try:
data, address = server_socket.recvfrom(1024)
print(f"Message: {data.decode()}")
server_socket.sendto("Hello, client".encode(), address)
except socket.timeout:
pass
except KeyboardInterrupt:
server_socket.close()
- Создаём объект сокета с помощью
socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
, гдеsocket.AF_INET
отвечает за IPv4, аsocket.SOCK_DGRAM
за протокол UDP. - Задаём
.timeout
, чтобы дать возможность программе поймать Ctrl+C. - С помощью
.recvfrom
получаем данные и адрес клиента, а с помощью.sendto
возвращаем ответ. - Оборачиваем полученный код в
try-except socket.timeout
, чтобы таймаут не завершил работу сервера. - Оборачиваем этот
try-except
в циклwhile True
, чтобы сервер не прекратил работу после обработки первого запроса. - Оборачиваем цикл в
try-except KeyboardInterrupt
, чтобы можно было завершить работу сервера по нажатию на Ctrl+C.
client.py
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
client_socket.sendto("Hello, server".encode(), ("127.0.0.1", 8080))
data, address = client_socket.recvfrom(1024)
print(f"Message: {data.decode()}")
- Создаём объект сокета с помощью
socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
, гдеsocket.AF_INET
отвечает за IPv4, аsocket.SOCK_DGRAM
за протокол UDP. - С помощью
.sendto
отправляем запрос серверу, а с помощью.recvfrom
получаем ответ.