Ferdinand Sousa wrote: >========================================================== .# file receiver ># work in progress > >import socket > >s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) >HOST = '192.168.1.17' >PORT = 31400 > >s.bind((HOST, PORT)) >s.listen(3) >conn, addr = s.accept() >print 'conn at address',addr >conn.send('READY') >f = open('C:\\Documents and Settings\\USER\\Desktop\\test.pdf','wb') >fsize=int(conn.recv(8)) >print 'File size',fsize >f.write(conn.recv(fsize))
This recv is not guaranteed to actually receive the number of characters you are asking for - it will stop when it has received that many, yes, but it may return with less, or even none if there is a time out set. The TCP is a more or less featureless stream of characters. Consider including a start marker so you know where the lesson starts. If you do this, consider the possibility of having a "false sync". Sending/receiving the length is good - also google for "netstring" Google for "escaping". Consider writing a loop to receive until the required length has been received - look at the docs for the recv function - it can tell you how much has been received. >f.close() >conn.close() >s.close() > >raw_input('Press any key to exit') > > >=========================================================== > ># file sender !!! ># Work in progress > >import socket, os >from stat import ST_SIZE > > >HOST = '192.168.1.17' >PORT = 31400 # Arbitrary non-privileged port > >s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) > >s.connect((HOST,PORT)) >if s.recv(5)!='READY': > raw_input('Unable to connect \n\n Press any key to exit ...') > s.close() > exit() > >f=open('C:\\Documents and Settings\\USER\\Desktop\\t.pdf', 'rb') >fsize=os.stat(f.name)[ST_SIZE] > >s.send(str(fsize)) >s.send(f.read()) Are you sure that the send will send all the chars that you ask it to send? If yes - why do you think this? What are the values that the send can return? > >s.close() >f.close() > >=========================================================== hth - Hendrik -- http://mail.python.org/mailman/listinfo/python-list