TransferirArquivosViaSockets

Depois de muito penar em sockets, tive uma luz, e vou postar um pequeno exemplo de como transferir arquivos por sockets.

A idéia é não depender de serviços como FTP, SSH, samba para transferir um arquivo (por exemplo um backup remoto).

No servidor que vai receber o arquivo "foo.tar.gz"

   1 #serv_sock.py
   2 
   3 import socket
   4 
   5 HOST = ''
   6 PORT = 57000
   7 
   8 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   9 s.bind((HOST, PORT))
  10 s.listen(1)
  11 
  12 conn, addr = s.accept()
  13 arq = open('/home/backup/foo.tar.gz', 'w')
  14 
  15 while 1:
  16     dados = conn.recv(1024)
  17     if not dados:
  18         break
  19     arq.write(dados)
  20 
  21 arq.close()
  22 conn.close()

No cliente, ele vai enviar um arquivo "financeiro.tar.gz" para o servidor que está escutando na porta 57000, onde quando for conectar pela função connect, tudo que for "enviado" para o servidor, será executado abaixo do accept():

   1 #client_sock.py
   2 import socket
   3 
   4 HOST = 'localhost' #coloca o host do servidor
   5 PORT = 57000
   6 
   7 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
   8 
   9 s.connect((HOST,PORT))
  10 arq = open('/home/departamentos/financeiro/financeiro.tar.gz', 'r')
  11 
  12 for i in arq.readlines():
  13     s.send(i)
  14 
  15 arq.close()
  16 s.close()

#fim

espero que ajude alguma coisa.

Carlos Augusto Pacheco [MAILTO] c.augusto@paxeco.com.br

Volta para CookBook.

TransferirArquivosViaSockets (editada pela última vez em 2008-09-26 14:07:17 por localhost)