associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Revisão 5e 2006-02-13 02:49:43

Excluir mensagem

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= PORT=57000 
   6 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind((HOST,PORT)) s.listen(1)
   7 
   8 conn,addr= s.accept() 
   9 arq = open('/home/backup/foo.tar.gz','w')
  10 
  11 while 1:
  12 
  13     dados=conn.recv(1024) 
  14     if not dados:
  15     break
  16     arq.write(dados)
  17 
  18 arq.close() 
  19 conn.close()
  20 
  21 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 a baixo do accept() (pelo que eu li no docs do python.org)
  22 
  23 #client_sock.py 
  24 import socket
  25 
  26 HOST='localhost' #coloca o host do servidor 
  27 PORT=57000
  28 
  29 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  30 
  31 s.connect((HOST,PORT)) 
  32 arq=open('/home/departamentos/financeiro/financeiro.tar.gz','r')
  33 
  34 for i in arq.readlines():
  35     socket.send(i)
  36 
  37 arq.close() 
  38 s.close()

#fim

espero que ajude alguma coisa.

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

Volta para CookBook.