copiar arquivo via rede

1. copiar arquivo via rede

hp
perito

(usa Debian)

Enviado em 16/08/2018 - 15:33h

fala galera...
estava fazendo um script, mas tem um erro que não consigo encontrar no client:
server

#!/usr/bin/env python
import socket
host = "127.0.0.1"
port = 8080
addr = (host, port)
skt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
skt.bind(addr)
skt.listen(1)
print "conectando ao host..."
cnx, dd = skt.accept()
print "conectado ao host ", dd
o = raw_input("File: ")
name = raw_input("Name file: ")
cnx.send(name)
with open(o, "rb") as flo:
cnx.send(flo)
print "OK"
cnx.close()

cliente

#!/usr/bin/env python
import socket
host = "127.0.0.1"
port = 8080
addr = (host, port)
skt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
cnx = skt.connect(addr)
name = cnx.recv(1024)
dados = cnx.recv(1024)
with open(name, "wb") as fld:
fld.write(dados.read())
print "OK"
cnx.close()

agradeço a quem puder me ajudar!


  


2. Re: copiar arquivo via rede

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 16/08/2018 - 16:11h

Permita-me fazer algumas observaçãoes.

Na sua linha de raciocínio, pelo que ví, vc faz com que o server escolha o arquivo a ser enviado e não o cliente. Tente colocar o server nessa lógica:


1° Escutar na porta X;
2° Receber o nome do arquivo procurado;
3° Se o arquivo existir enviar o mesmo;
4° Fazer outra operação reaproveitando a conexão ou finalizar e fechar o socket;

Já no cliente dê liberdade para escolher o arquivo, veja, o server só tem que escutar e responder e não escolher o arquivo a ser enviado. Deixando esse trabalho para o cliente você se livra de muito trabalho. Faça nessa lógica:

1° Conectar a o endereço X:X;
2° Entrar com o nome do arquivo a ser procurado;
3° Se o arquivo foi encontrado, começe o download dele;
4° Fazer outra operação ou finalizar a conexão;

Já em relação ao erro, deve ser na sequência das operações send e recv que veêm algum erro e fecham a cenexão.

Python3 é melhor que python2 para tratar bytes ;)



3. Re: copiar arquivo via rede

caio
caionarezzi

(usa CentOS)

Enviado em 16/08/2018 - 19:28h

Não sei se você necessita que a copia seja via 8080, via ssh é uma maneira muito melhor eficaz, tem mais segurança para a copia dos dados e não fica aberto ao mundão ai como na 8080, pois para interceptar dados da 8080 é bem mais facil do que da 21 ou ate mesmo da 22, na minha opinião, sugiro que faça isso, caso se interesse eu posso te ajudar no desenvolvimento

"Se tu o desejas, podes voar, só tens de confiar muito em ti." - Steve Jobs






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts