Python3. UDP. Клиент и сервер

Добавлено: 27/12/2015 07:29 |  Обновлено: 27/12/2015 07:44 |  Добавил: nick |  Просмотры: 16570 Комментарии: 1
Вводная часть
Статья с примером клиента и сервера (UDP) на Python3.
Предлагаю простой пример UDP-клиента и UDP-сервера на Python3.

В примере для сервера задается таймаут в 60 секунд. Типом исключения является socket.timeout, который является подклассом OSError. Текст сообщения для отправки запроса к серверу и ответа сервера запрашиваются от пользователя.
msg = input('Enter message to send: ')
Получается своего рода UDP-чат.

Сервер.
import socket

timeout = 60
host = 'localhost'
port = 7777
addr = (host, port)
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind(addr)

while True:
	print ('Waiting for data ({0} seconds)...'.format(timeout))
	server.settimeout(timeout)
	try:
		d = server.recvfrom(1024)
	except socket.timeout: 
		print('Time is out. {0} seconds have passed'.format(timeout))
		break
	received = d[0]
	addr = d[1]
	print ('Received data: ' , received)
	print ('From: ' , addr)
	msg = input('Enter message to send: ')
	server.sendto(msg.encode('utf-8'), addr)
server.close()

Клиент.
import socket

host = 'localhost'
port = 7777
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
msg = input('Enter message to send: ')
client.sendto(msg.encode('utf-8'), (host, port))
d = client.recvfrom(1024)
reply = d[0]
addr = d[1]
print ('Server reply: ' + reply.decode('utf-8'))
client.close()

Оставьте свой комментарий

Комментарии