Note that there are some explanatory texts on larger screens.

plurals
  1. POFile Transfer with Sockets on Python
    primarykey
    data
    text
    <p>Trying to build a simple file transfer with sockets on Python. I got stuck and it seems that I can't send any part of the file.</p> <p>Following some advice, I've tried to send the last line of the file, so I can know when to finish the connection. </p> <p>But it happens that once I send the first package, the client never gets the rest.</p> <p>Here you will see my code (Server side):</p> <pre><code>import os import socket PORT = 8080 HOST = 'localhost' socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) socket.bind((HOST,PORT)) socket.listen(10) conn, addr = socket.accept() print '\033[46m\033[34m\033[1mBienvenido al File Sender v.0.02 hecho en Python. Este programa permite enviar archivos a traves de tu maquina\033[0m' ANSI_RED = '\033[31m' ANSI_BLUE = '\033[34m' ESCAPEANSI = '\033[0m' def seleccion_path(): PATH = raw_input('\033[34m\033[1mSelect the Path (./ by default)').strip('n') if PATH == '': PATH = os.getcwd() print PATH, ESCAPEANSI acepta_path = raw_input('\033[34m\033[1mSi o No (S/N)').lower().strip(' ') if acepta_path == 's' or acepta_path == 'si': return PATH else: seleccion_path() def filesDir(path): files = os.listdir(PATH) for fl in files: i = int(files.index(fl))+1 print ANSI_RED + str(i)+ ')' + fl return files PATH = seleccion_path() print 'el PATH seleccionado es:', PATH + '\n' filesDir(PATH) fileSelected = int(raw_input(ANSI_BLUE + 'Select a file with the number').strip(' ').lower()) print PATH + filesDir(PATH)[fileSelected-1] fileToSend = open(PATH + filesDir(PATH)[fileSelected-1], 'rb') qLines = len(open(PATH + filesDir(PATH)[fileSelected-1], 'rb').readlines()) finalLine = cpfileToSend.readlines()[qLines-1] conn.send(finalLine) while True: data = conn.sendall(fileToSend.readline()) conf = conn.recv(1024) print conf if conf == 'OK': conn.close() fileToSend.close() break print '\033[43m File sent' #Finaliza el programa y deja los codigos ANSI cerrados print ESCAPEANSI exit() </code></pre> <p>Here is the Client:</p> <pre><code>import os import socket PORT = 8080 HOST = 'localhost' socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) socket.connect((HOST, PORT)) fname = open('./fileSent.pdf', 'w+') finalLine = socket.recv(1024) print finalLine while True: strng = socket.recv(2048) print 'aaaaa',strng fname.write(strng) if finalLine in strng: fname.write(strng) socket.send('OK') socket.close() fname.close() print 'Data received correctly' exit() </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload