Задание №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получаем ответ.

