1411
Comentário:
|
1372
|
Deleções são marcadas assim. | Adições são marcadas assim. |
Linha 1: | Linha 1: |
===Transferindo arquivos via sockets=== 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 9: | Linha 7: |
{{{ #!python |
|
Linha 13: | Linha 13: |
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 15: | Linha 16: |
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 19: | Linha 21: |
* | dados=conn.recv(1024) if not dados: break arq.write(dados) |
Linha 21: | Linha 26: |
dados=conn.recv(1024) if not dados: o break arq.write(dados) arq.close() conn.close() |
arq.close() conn.close() |
Linha 32: | Linha 31: |
#client_sock.py import socket | #client_sock.py import socket |
Linha 34: | Linha 34: |
HOST='localhost' #coloca o host do servidor PORT=57000 | HOST='localhost' #coloca o host do servidor PORT=57000 |
Linha 38: | Linha 39: |
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 41: | Linha 43: |
socket.send(i) | |
Linha 42: | Linha 45: |
* socket.send(i) arq.close() s.close() |
arq.close() s.close() }}} |
Linha 49: | Linha 50: |
Linha 53: | Linha 55: |
Volta para CookBook. |
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.