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

Diferenças para "TransferirArquivosViaSockets"

Diferenças entre as versões de 2 e 4 (2 versões de distância)
Revisão 2e 2006-02-09 14:13:02
Tamanho: 1402
Comentário:
Revisão 4e 2006-02-13 02:48:45
Tamanho: 1362
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 12: Linha 12:
HOST= PORT=57000 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind((HOST,PORT)) s.listen(1) HOST= PORT=57000
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind((HOST,PORT)) s.listen(1)
Linha 14: Linha 15:
conn,addr= s.accept() arq = open('/home/backup/foo.tar.gz','w') conn,addr= s.accept()
arq = open('/home/backup/foo.tar.gz','w')
Linha 18: Linha 20:
    *     dados=conn.recv(1024)
    if not dados:
    break
    arq.write(dados)
Linha 20: Linha 25:
      dados=conn.recv(1024) if not dados:
          o

            break

      arq.write(dados)

arq.close() conn.close()
arq.close()
conn.close()
Linha 31: Linha 30:
#client_sock.py import socket #client_sock.py
import socket
Linha 33: Linha 33:
HOST='localhost' #coloca o host do servidor PORT=57000 HOST='localhost' #coloca o host do servidor
PORT=57000
Linha 37: Linha 38:
s.connect((HOST,PORT)) arq=open('/home/departamentos/financeiro/financeiro.tar.gz','r') s.connect((HOST,PORT))
arq=open('/home/departamentos/financeiro/financeiro.tar.gz','r')
Linha 40: Linha 42:
    socket.send(i)
Linha 41: Linha 44:
    *

      socket.send(i)

arq.close() s.close()
arq.close()
s.close()
}}}
Linha 48: Linha 49:
}}}

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"

#serv_sock.py

import socket

HOST= PORT=57000 
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind((HOST,PORT)) s.listen(1)

conn,addr= s.accept() 
arq = open('/home/backup/foo.tar.gz','w')

while 1:

    dados=conn.recv(1024) 
    if not dados:
    break
    arq.write(dados)

arq.close() 
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 a baixo do accept() (pelo que eu li no docs do python.org)

#client_sock.py 
import socket

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

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

s.connect((HOST,PORT)) 
arq=open('/home/departamentos/financeiro/financeiro.tar.gz','r')

for i in arq.readlines():
    socket.send(i)

arq.close() 
s.close()

#fim

espero que ajude alguma coisa.

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

Volta para CookBook.