Send file via network with Python

Asked

Viewed 336 times

1

Server

#!/usr/bin/env python
#-*-coding:utf-8;-*-
import socket
import os
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 "||-----------------------------------------------------------||"
print "||---                      Link v1.0                      ---||"
print "||-----------------------------------------------------------||"
print "Aguardando conexão..."
dd, cnx = skt.accept()
print "Conectado ao host: ", cnx
opc = dd.recv(1024)
if opc == "0":
  skt.close()
  exit()
elif opc == "1":
  name = dd.recv(1024)
  fli = dd.recv(1024)
  with open(fli, "rb") as flo:
    flo.write(name.read())

Client

#!/usr/bin/env python
#-*-coding:utf-8;-*-
import socket
import os
print "||-------------------------------------------------------||"
print "||---                    Link v1.0                    ---||"
print "||-------------------------------------------------------||"
host = "127.0.0.1"
port = 8080
addr = (host, port)
skt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
skt.connect(addr)
print "[1]=> Enviar\n[2]=> Baixar\n[0]=> Sair"
opc = raw_input("[Opção]=> ")
if opc == "0":
  skt.send("0")
  skt.close()
  exit()
elif opc == "1":
  skt.send("1")
  print "Deseja listar diretorios?"
  op = raw_input("s/N: ")
  if op == "s" or op == "S":
    d = raw_input("[Dir]=> ")
    dr = os.listdir(d)
    for o in dr:
      print o
    fli = raw_input("Open file: ")
    name = raw_input("Name: ")
    skt.send(name)
    with open(fli, "rb") as flo:
      skt.send(flo.read())
      print "\n" * 200
      print "Done!"

The mistake is this:

TypeError: file() argument 1 must be encoded string without null bytes, not str
No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.