Ir para o conteúdo

Transferir Arquivos via Sockets

Importante: Esta página não se encontra completa, por favor ajude a melhorá-la.

Irei explicar nestes simples exemplos como transferir um arquivo de um determinado local (seu computador por exemplo), para outro local qualquer, através de socket.

Em Python, manipular sockets é uma tarefa extremamente fácil.

Vamos supor que você que transferir um FICHEIRO.rar do seu computador, para outro computador: este outro computador, deve estar rodando o servidor, esperando uma conexão do cliente.

# 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()

Então no seu PC você com o arquivo FICHEIRO.rar, executará o Cliente.py:

# Cliente 
import socket

print "Clinte"

HOST='localhost' #coloca o host do servidor 
PORT=57000

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

print "conectando com servidor..."
s.connect((HOST,PORT))

print "abrindo arquivo..."
arq=open('File.rar','rb')

print "enviado  arquivo"
for i in arq:
    #print i
    s.send(i)

print "saindo..."
arq.close()
s.close()

Este exemplo acima é muito simples, você pode adaptar, modificar e melhorar toda sua estrutura de acordo com a necessidade.