我目前正在用python创建一个TCP套接字服务器。服务器应该从特殊的连接客户端接收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
答案 0 :(得分:1)
我修复了它。当我遍历所有连接的客户端时,我仍在使用conn发送。不得不使用c代替