Babloo wrote: > On Sep 16, 7:38 am, Benjamin <[EMAIL PROTECTED]> wrote: >> On Sep 15, 5:15 am, Babloo <[EMAIL PROTECTED]> wrote: >> >>> Hi everyone, >>> i wanted to implement a client- server connection >>> and transfer a file over the network. i was able to implement a normal >>> set up where in i was able to send chat messages and small chunks of >>> data. >>> I want to implement the file transfer with out using the FTP library >>> available in python . >>> So can anyone suggest a piece of code by which i can >>> do that. >> I don't know what you really want, but look at >> Twisted.http://twistedmatrix.com >> >> >> >>> Thanks >>> Pruthvi >> > I am beginner at using python language. > I mean i am implementing that in a windows based machine and wanted > to transfer files over the LAN. I have written down two files as > client.py and server.py . I ran these files at two different Computers > in the LAN and I was able to send small chunks of messages( like > chat). > > I was successful in establishing connection and sending small > messages. But now i want to transfer a complete file with out using > the ftplib(FTP LIBRARY) in python. > > > The files look like this.i hope this would help. > > ______________________________________________ > # Server program > > from socket import * > > # Set the socket parameters > host = "117.105.224.94" > port = 21567 > buf = 1024 > addr = (host,port) > > # Create socket and bind to address > UDPSock = socket(AF_INET,SOCK_DGRAM) > UDPSock.bind(addr) > > # Receive messages > while 1: > data,addr = UDPSock.recvfrom(buf) > if not data: > print "Client has exited!" > break > else: > print "\nReceived message '", data,"'" > > # Close socket > UDPSock.close() > __________________________________________________ > > # Client program > > from socket import * > > # Set the socket parameters > host = "117.105.224.94" > port = 21567 > buf = 1024 > addr = (host,port) > > # Create socket > UDPSock = socket(AF_INET,SOCK_DGRAM) > > def_msg = "===Enter message to send to server==="; > print "\n",def_msg > > # Send messages > while (1): > data = raw_input('>> ') > if not data: > break > else: > if(UDPSock.sendto(data,addr)): > print "Sending message '",data,"'....." > > # Close socket > UDPSock.close() > > _____________________________________________________________ >
You're really not far away then, you basically need to come up with a simple protocol that can transmit 1) The file name 2) The file length 3) The file data itself You could also transmit the files metadata: datestamps, permissions etc if you wanted to make it better. Also, there might be security issues to consider too if you're running this on anything other than your own home network. So anyway, for a simple solution howabout you send: filename + "\n" filesize + "\n" (make sure you use str() to send this as text) Then loop through your filedata send a chunk wait for an OK back from the other side loop At the receiving end as the chunks arrive: Get the filename Open a file for writing Get the filesize Setup a loop to receive the file data Send OK Get chunk from socket Write data to file Break (stop) if filesize reached Loop Close file This, of course has no error correction and will probably die if you have any packet loss on your network, a more robust solution would be to use TCP sockets rather than UDP sockets. Hope this helps :-) Roger Heathcote http://www.technicalbloke.com http://movingtoubuntu.technicalbloke.co.uk -- http://mail.python.org/mailman/listinfo/python-list