1389
Comentário: Correção do cliente, s.send()
|
1366
|
Deleções são marcadas assim. | Adições são marcadas assim. |
Linha 5: | Linha 5: |
no servidor que vai receber o arquivo "foo.tar.gz" |
No servidor que vai receber o arquivo "foo.tar.gz" |
Linha 13: | Linha 12: |
HOST= PORT=57000 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind((HOST,PORT)) s.listen(1) |
HOST = '' PORT = 57000 |
Linha 16: | Linha 15: |
conn,addr= s.accept() arq = open('/home/backup/foo.tar.gz','w') |
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') |
Linha 20: | Linha 23: |
dados=conn.recv(1024) |
dados = conn.recv(1024) |
Linha 23: | Linha 25: |
break | break |
Linha 26: | Linha 28: |
arq.close() | arq.close() |
Linha 28: | Linha 30: |
Linha 31: | Linha 32: |
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) |
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(): |
Linha 35: | Linha 35: |
#client_sock.py | #client_sock.py |
Linha 38: | Linha 38: |
HOST='localhost' #coloca o host do servidor PORT=57000 |
HOST = 'localhost' #coloca o host do servidor PORT = 57000 |
Linha 41: | Linha 41: |
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) | s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) |
Linha 43: | Linha 43: |
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 49: | Linha 49: |
arq.close() | arq.close() |
Linha 58: | Linha 58: |
Carlos Augusto Pacheco [MAILTO] c.augusto@paxeco.com.br | Carlos Augusto Pacheco [MAILTO] c.augusto@paxeco.com.br |
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.