@FOUREX

Как сделать так что бы Socket не стопорил цикл?

import socket

while True:
	data = connection.recvfrom(1024)
	players = literal_eval(data[0].decode("utf8"))


	pygame.draw.circle(sc, (255, 255, 255), (players), 6)


У меняв цикле есть
data = connection.recvfrom(1024)
, и пока сервер не отправит пакет, цикл стоит на месте. Как можно это исправить?
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Есть разные способы. Можно получать данные в отдельном потоке, но это несёт свои проблемы, и довольно много.

Я бы посоветовал освоить использование select() - эта функция позволяет узнать, есть ли в сокете непринятые данные, прежде чем пытаться их принять.

Также можно попробовать освоить работу через asyncio, это упрощает совершенствование приложения в дальнейшем. Но это также сложнее для начинающего, нужно немножко "вывихнуть мозг" чтобы понять, как работает асинхронная программа.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы