Реализация отправки коротких текстовых сообщений с использованием пакетов UDP очень проста и обеспечивает очень легкий канал обмена сообщениями. Но у этой модели есть большой недостаток, то есть надежность данных не гарантируется, возможна потеря пакетов, и даже серьезная ситуация состоит в том, что ваше сообщение будет полностью потеряно, когда сервер недоступен. Но эта задача может быть очень полезной в некоторых ситуациях:
Вас не волнует, потеряно ли сообщение;
вы не хотите завершать программу только потому, что сообщение не может быть доставлено;
server.py
import socket
port = 8081
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(("", port))
print "waiting on port:", port
while 1:
data, addr = s.recvfrom(1024)
print data
---
client.py
import socket
port = 8081
host = "localhost"
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(("", 0))
s.sendto("Holy Guido! It's working.", (host, port))
Также есть напоминание, не используйте указанную выше программу для отправки большого количества пакетов, особенно в Windows. Если вы хотите отправить большое сообщение, вы можете сделать это:
BUFSIZE = 1024
while msg:
s.sendto(msg[:BUFSIZE], (host, port))
msg = msg[BUFSIZE:]