def broadcast_message(msg): for peer in list(peers.get_known_peers()): if peer != peers.get_local_peer(): debug.output(debug.info, '[broadcast] send %s to ' % str(type(msg)) + str(peer)) sender = client.Sender(peer) sender.send_message(msg) debug.output(debug.info, '[broadcast] sent %s to ' % str(type(msg)) + str(peer)) del sender debug.output(debug.info, '[broadcast] close connection to ' + str(peer))
def find_peers(): global known_peers for peer in list(known_peers): if peer == get_local_peer(): continue debug.output(debug.info, '[find_peers] send GetPeersMessage to ' + str(peer)) sender = client.Sender(peer) peers_message = sender.send_message(messages.GetPeersMessage()) debug.output(debug.info, '[find_peers] sent GetPeersMessage to ' + str(peer)) for new_peer in peers_message.peers: add_peer(new_peer) del sender debug.output(debug.info, '[find_peers] close connection to ' + str(peer))
def serve(): tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM) orig = (HOST, PORT) tcp.bind(orig) tcp.listen(1) print('inicializando server...') print 'endereco:',tcp.getsockname()[0],'\nporta:',PORT print 'listening...' while True: con, address = tcp.accept() response = con.recv(1024) if not response: break print 'mensagem recebida:', response print 'Conectado por:', address json_decode= response.replace("'", "\"") r = json.loads(json_decode) print 'json:',r tipo = r['tipo'] print 'tipo de request:', tipo if tipo == pcp.PEDIDO_LISTA_ARQUIVO: # envia lista de arquivos import client files = controle.listarArquivos() send = client.Sender(address, 54321) #con.close() send.sendListFiles(files,address) elif tipo == pcp.ENVIO_ARQUIVO: # envia arquivo gg = [] elif tipo ==pcp.ENVIO_LISTA_ARQUIVO: d=[] # client.send(response) #con.close() print 'finalize request...' print ('Finalizando conexao do client:', address) #serve()
def processRequest(self, client, address): ip=address[0] print 'connected by:',ip size = 1024 #try: data = client.recv(size) if data: # Set the response to echo back the recieved data response = data print 'response:',response print 'processing request' #c=controle.process_request(response,address) json_decode = response.replace("'", "\"") r = json.loads(json_decode) tipo = r['tipo'] print 'tipo de request:', tipo import client if tipo == pcp.PEDIDO_LISTA_ARQUIVO : # envia lista de arquivos files = controle.listarArquivos() send = client.Sender(address,'') send.sendListFiles(files,ip) elif tipo == pcp.ENVIO_LISTA_ARQUIVO: # envia lista arquivo arquivos=r['dados'] print 'recuperou do json lista:',arquivos #arquivos.append('gasparzinho.jpg') diff=controle.compararListas(arquivos) if not diff : print 'diretorio sincronizado com cliente' else: print 'preparando envio de requisicao dos arqs nao sincronizados' for f in diff: send = client.Sender(ip, str(f)) send.getFile() time.sleep(1) #client.send(response) elif tipo == pcp.PEDIDO_ARQUIVO: arquivo = r['dados'] if type(arquivo) is list: for a in arquivo: print 'recuperou dados do json:', a send = client.Sender(ip, a) send.sendFile() print 'finalize request' elif type(arquivo) is str: print 'recuperou dados do json:', arquivo send = client.Sender(ip, arquivo) send.sendFile() print 'finalize request' elif tipo == pcp.ENVIO_ARQUIVO: dados = r['dados'] print 'recuperou dados do json:', dados controle.saveFile(dados[0],controle.decode(dados[1])) else: raise ('Client disconnected') print 'finalizando thread...'
#!/usr/bin/python from models import * import client import time snd = client.Sender() recv = client.Receiver() from peewee import * from types import * import locale import sys import logging class Reply(): def run(self): while True: msg = recv.recv_json() sender = msg['sender'] message = msg['message'] token = message.split() if len(token) > 2: command = token[1] else: command = 'error' try: if command == 'info': id = int(token[2]) try: