клиент/сервер udp с повторной отправкой сообщений

#python #sockets #udp

Вопрос:

У меня есть клиент и сервер. Сервер отправляет клиенту случайное число, и если оно меньше 4, клиент отвечает неудачно.

сервер:

 import random
from socket import *

serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind(('', 12000))
while True:
    rand = random.randint(2, 4)
    message, address = serverSocket.recvfrom(1024)

    message = (message.decode() " СЛУЧАЙНОЕ ЧИСЛО: " str(rand)).upper()
    print("Сервер готов!")
    print("Случайное число: " str(rand))
    
    if rand < 4:
        continue
    serverSocket.sendto(message.encode(), address)
 

Клиент:

 from time import *
from socket import *

localhost = '127.0.0.1'



for i in range(1, 11):


    clientSocket = socket(AF_INET, SOCK_DGRAM)
    date_current = ctime()
    startTime = time()

    clientSocket.settimeout(0.5)


    try:

        requestMessage = bytes("Ping "   str(i)   " "   date_current, 'utf8')

        clientSocket.sendto(requestMessage, (localhost, 12000))

        mess, rand = clientSocket.recvfrom(1024)


        endTime = time()
        rtt = endTime - startTime

        print(mess.decode())
        print("Ответ " localhost " подтверждено: " str(float(rtt)))
        print()
    except:
        print(requestMessage.decode())
        print("Время вышло")
        print()
 

Я хочу, чтобы клиент отправил сообщение на сервер в случае сбоя, а сервер восстановил номер и отправил его клиенту до тех пор, пока не поступит ответ об удаче (более 4).

Комментарии:

1. Круто, но в чем вопрос?

2. Я хочу, чтобы клиент отправил серверу сообщение о том, что соединение не удалось установить, и сервер отправил бы новый номер

3. Что мешает вам позвонить clientSocket.sendto() во второй раз, чтобы сделать это?