gregoriolima Posted April 23, 2013 at 01:38 PM Report #504534 Posted April 23, 2013 at 01:38 PM (edited) Bom dia pessoal, tenho que fazer uma transferencia de arquivo atraves de um chat. eu já fiz o servidor e o chat, está funcionando que é uma beleza, mas agora, eu tenho que fazer a transferencia de arquivo, mostrando a taxa de transferencia e o tamanho do arquivo (ou mandar o arquivo e pronto, pq já esquentei muito a cabeça com isso)... tentei de alguns modos, até olhei uma outra página aqui do portugal-a-programar, mas o codigo, simplesmente cria um novo arquivo, e não manda um arquivo já existente. # Servidor import socket print "Servidor" HOST = "localhost" PORT = 57000 s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) print "Escutando a porta..." s.bind((HOST,PORT)) s.listen(1) print "Aceitando a conexao..." conn,addr= s.accept() print "recebendo o arquivo..." arq = open('File_ouputt.rar','wb') while 1: dados=conn.recv(1024) if not dados: break arq.write(dados) print "saindo..." arq.close() conn.close() import socket from threading import Thread import time def chat(conexao): exitchat = True conexao.send(" CONECTADO AO SERVIDOR CHAT\n") conexao.send("\quit para sair") while exitchat: msg = conexao.recv(1024) print msg if msg == "\quit": conexoes.remove(conexao) time.sleep(2) conexao.send("CHAT FECHADO") exitchat = False else: for e in conexoes: if e != conexao: e.send(msg) global exit exit = True servidor = socket.socket(socket.AF_INET, socket.SOCK_STREAM) end = ("", 6363) servidor.bind(end) servidor.listen(10) conexoes = [] while exit: conexao, end_remoto = servidor.accept() conexoes.append(conexao) th = Thread( target = chat, args = (conexao,)) th.start() Esses são os código, preciso agora introduzir a parte de transferencia Edited April 23, 2013 at 08:43 PM by thoga31
icemonster2 Posted April 26, 2013 at 01:34 PM Report #504929 Posted April 26, 2013 at 01:34 PM (edited) No servidor manda uma mensagem para o cliente do tipo "transferir ficheiro" quando quiseres começar a enviar o ficheiro e depois "transferencia completa" quando acabar de fazer upload para o cliente. No programa do cliente poe para, quando reçeber essa mensagem de inicio do servidor, fazer um while para reçeber o ficheiro completo, enquanto o servidor nao mandar uma mensagem a dizer "transferência completa" continuar a reçeber os dados e guardá-los num ficheiro. Desculpa se não fui muito claro em relação a alguma coisa. mensagem = conexao.recv(1024) if mensagem == 'transferir ficheiro': mensagem = conexao.recv(1024) while mensagem != 'Transferencia completa': ficheiro.write(mensagem) #ja tens que ter o ficheiro aberto, obviamente mensagem = conexao.recv(1024) Ice_Monster Edited April 26, 2013 at 01:37 PM by icemonster2
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now