У меня есть сокетное соединение, скажем, клиент и сервер. Поэтому я отправляю данные с клиента на сервер и на стороне сервера, сохраняю их как словарь в виде пары ключ-значение. Но я не уверен, как складывать.
Например: я отправляю сообщение «animal» и сохраняю его как my_dict = {a: b}, где a - это сообщение, а b - связанный с ним ip-адрес. Так что я хочу, если я отправлю сообщение как «человек». Я хочу сохранить сообщение и IP-адрес. но когда я печатаю my_dict, он всегда выдает последнее сообщение, которое я отправил. Я действительно хочу напечатать весь набор словарей, которые были сохранены. я хочу напечатать «животное»: ip и «человек»: ip.
Я хочу получить доступ к этому словарю, например, принимая животное в качестве темы и ip в качестве связующего IP-адреса для связи. (Pub-суб)
сторона сервера:
def bd_recv(host,port):
my_dict=dict()
#listening bd for other devices and controllers
sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
address=host,port
sock.bind(address)
msg,client=sock.recvfrom(4089)
a=msg.decode()
b=client[0]
my_dict={a:b}
for key,value in my_dict.items():
print (key)
def pub-sub():
context = zmq.Context()
sub=context.socket(zmq.SUB) # Note.
#for the animal topic here i will refer to dictionary. if this animal topic is there i will take that key and value(ip) and append that to the variable ip here.
sub.setsockopt_string(zmq.SUBSCRIBE, 'animal:') # Note.
ip=# here comes the value for animal which is ip.
sub.connect('tcp://ip:8000')
for i in range(2):
print('Received: %s' % sub.recv())
if __name__=="__main__":
t1 = threading.Thread(target=bd_recv, name='broadcast_receive', args=(bd_of_the_machine, 9289))
threads=threading.Thread(target=pub-sub)
t1.start()
threads.start()