Как сделать python socket.send () и recv () "wait" - PullRequest
0 голосов
/ 22 января 2020

В настоящее время я работаю с библиотекой сокетов, и мне было интересно, есть ли хороший способ заставить сокет ждать, пока клиент не получит байты, и ждать, пока сервер не отправит байты дальше. В настоящее время я нашел некоторые обходные пути, но я бы очень признателен за лучшее решение Поэтому для получения я сделал этот руби sh:

def rec(client_socket):
 while True:
    try:
        temp = pickle.loads(client_socket.recv(1024))
        return temp
    except Exception as exception:
        pass

У меня нет возможности узнать, когда сервер прекращает вычисления, поэтому time.sleep () не вариант.

А для отправки я делаю еще худшую вещь:

def send_many(num, li):
    client_socket.send(pickle.dumps(num))
    for i in range(num):
        rec(client_socket) #waiting for confirmation
        go = li[i]
        se = pickle.dumps(go)
        client_socket.send(se)

Итак, я просто подожду, пока клиент не получит байты и не вернёт «ОК» на сервер. В противном случае он просто go через суперскорость l oop подумает, что отправил все, а клиент ничего не получил. Спасибо за предложения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...