import socket import json def main(): SERVER = "timd.cn", 8081 PEER_NAME = "ClientB" sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.bind(("", 0)) try: sock.sendto(json.dumps({"op": "get_peer_by_name", "name": PEER_NAME}), SERVER) data, addr = sock.recvfrom(1024) response = json.loads(data) if response["code"] != 0: raise RuntimeError("no peer named: %s" % PEER_NAME) sock.sendto(json.dumps({"op": "prepare", "name": PEER_NAME}), SERVER) data, _ = sock.recvfrom(1024) response = json.loads(data) if response["code"] != 0: raise RuntimeError("prepare for %s failed" % PEER_NAME) peer = tuple(response["peer"]) print("peer is: (%s:%d)" % peer) for _ in range(10): sock.sendto(json.dumps({"op": "get_data"}), peer) print(sock.recvfrom(1024)) finally: sock.close() if __name__ == "__main__": main()