Отправка и получение информации с помощью сокетов в Python - PullRequest
0 голосов
/ 17 июня 2019

В настоящее время я создаю сервер сокетов TCP на python. Сервер должен получать данные в формате json от специального подключенного клиента. Сервер должен распространять данные среди всех подключенных клиентов.

Моя проблема Я могу получить данные от клиента и распаковать их в различные объекты JSON. Но всякий раз, когда я пытаюсь распространять (отправлять) одни и те же данные json остальным клиентам, это не работает. Однако, если я отправляю фиктивные данные, а не данные, полученные от конкретного клиента, все работает так, как должно.

Таким образом, проблема в том, что принимающая часть и отправляющая часть сервера не работают вместе. Я знаю, что это возможно, но это просто не сработает.

Как уже упоминалось, это работает, когда я использую фиктивные данные для отправки всем клиентам. Это наводит меня на мысль, что он не может отправлять те же данные, что и получает, даже если должен.

Пример проблемы:

def run(self):
  while conn:
    while True:
      try:
        # The receiving part
        data = conn.recv(2048)
        data = json.loads(data)
        x = data.get("X")
        z = data.get("X")


        # The sending part
        # It is to mention that I am looping through all clients,
        # so sending to all clients is not the problem.
        with client_list:
          for c in CLIENTS:
            message = json.dumps({"Title": "Coords", "X": x, "Z": z})
            conn.sendall(coords.encode())
      except Exception:
        pass

1 Ответ

1 голос
/ 17 июня 2019

Я исправил это.Когда я перебрал все подключенные клиенты, я все еще использовал conn для отправки.Пришлось использовать вместо вместо

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