【发布时间】:2016-02-06 12:05:45
【问题描述】:
这个问题已经过编辑,专注于一个更简单的问题
所以我有一个基本的客户端-服务器套接字安装,其中客户端发送一个像{'id': '1', 'value': 'A'} 这样的 JSON。在服务器端,如果我收到一条带有id 2 的消息,我想用id 1 向客户端发送一条消息,告诉他他的新value 是C。
此消息应该是“私人的”,即只有id 1 应该接收它,不允许广播。
我应该如何解决这个问题?如何跟踪服务器端的连接,以便向确定的客户端发送消息?问题在于是服务器向客户端发送消息,而不是响应客户端的消息。我想它一定是线程和队列的某种组合,但仍然没有弄清楚如何去做。
这是我现在在服务器上的代码,使用 dict 跟踪客户端,但它不起作用(sendall('C') 行中的错误文件描述符:
track_clients = {}
while True:
print "waiting for a connection"
connection, client_address = sock.accept()
try:
print "connection from ", client_address
data = json.loads(connection.recv(1024))
track_clients[data['id']] = connection
if data['id'] == '2':
conn = track_clients['1']
conn.sendall('C')
connection.sendall(json.dumps(data))
finally:
connection.close()
【问题讨论】: