Ir para o conteúdo
gregoriolima

transferencia de arquivo no chat

Mensagens Recomendadas

gregoriolima

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

Editado por thoga31

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
icemonster2

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

Editado por icemonster2

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.