Python - Потоки с сокетом UDP - PullRequest
       55

Python - Потоки с сокетом UDP

0 голосов
/ 25 сентября 2019

Я работаю над проектом, который содержит соединение UDP (он должен использовать протокол UDP, то есть требования).

У меня есть скрипт, который использует клиент-сервер, который позволяет клиенту отправлятьсообщение на сервер, и сервер возвращает сообщение подтверждения.Пока клиент получает сообщение об утверждении, он печатает, что сообщение достигло сервера.

Что мне нужно сделать, это добавить клиенту возможность прослушивать другие сообщения, которые сервер отправит емупри отправке на сервер других сообщений.Эта способность должна работать в фоновом режиме.

Другими словами, клиент должен иметь возможность получать и получать сообщения одновременно.Я предполагаю, что лучшим вариантом будет использование потоков, но я не смог найти, как правильно использовать его в моем скрипте.

Мой клиентский скрипт:

import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.settimeout(5)
sock.bind(('127.0.0.1', 5001))

msg_str = ""

while msg_str == "":
    print("Write Your Message:")
    msg_str = input()

    sock.sendto(msg_str.encode(), ('127.0.0.1', 5002))
    rec_msg, rec_address = sock.recvfrom(65527)
    rec_msg = rec_msg.decode('utf-8')
    print(str(rec_address) + " >> " + rec_msg)

    msg_str = ""

Мой серверный скрипт:

import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(('127.0.0.1', 5002))

print('Listening')

while True:
    # set max size of message
    rec_msg, rec_address = sock.recvfrom(65527)

    # decoding the message to String
    rec_msg = rec_msg.decode('utf-8')

    print(rec_msg)
    sock.sendto(rec_msg.encode(), ('127.0.0.1', 5001))
...