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

Diferenças para "TransferirArquivosViaSockets"

Diferenças entre as versões de 3 e 5 (2 versões de distância)
Revisão 3e 2006-02-09 22:08:33
Tamanho: 1373
Comentário:
Revisão 5e 2006-02-13 02:49:43
Tamanho: 1372
Comentário:
Deleções são marcadas assim. Adições são marcadas assim.
Linha 1: Linha 1:
Depois de muito penar em sockets, tive uma luz com "el Bog", vou postar um pequeno exemplo de como transferir arquivos por sockets. Depois de muito penar em sockets, tive uma luz, e vou postar um pequeno exemplo de como transferir arquivos por sockets.
Linha 8: Linha 8:
#!python

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.