Skip to content

Instantly share code, notes, and snippets.

@giefko
Last active October 23, 2022 22:40
Show Gist options
  • Save giefko/2fa22e01ff98e72a5be2 to your computer and use it in GitHub Desktop.
Save giefko/2fa22e01ff98e72a5be2 to your computer and use it in GitHub Desktop.
Python File Transfer over TCP
import socket # Import socket module
s = socket.socket() # Create a socket object
host = "1somehing.11somehing." #Ip address that the TCPServer is there
port = 50000 # Reserve a port for your service every new transfer wants a new port or you must wait.
s.connect((host, port))
s.send("Hello server!")
with open('received_file', 'wb') as f:
print 'file opened'
while True:
print('receiving data...')
data = s.recv(1024)
print('data=%s', (data))
if not data:
break
# write data to a file
f.write(data)
f.close()
print('Successfully get the file')
s.close()
print('connection closed')
import socket # Import socket module
port = 50000 # Reserve a port for your service every new transfer wants a new port or you must wait.
s = socket.socket() # Create a socket object
host = "" # Get local machine name
s.bind((host, port)) # Bind to the port
s.listen(5) # Now wait for client connection.
print 'Server listening....'
while True:
conn, addr = s.accept() # Establish connection with client.
print 'Got connection from', addr
data = conn.recv(1024)
print('Server received', repr(data))
filename='TCPSERVER.py' #In the same folder or path is this file running must the file you want to tranfser to be
f = open(filename,'rb')
l = f.read(1024)
while (l):
conn.send(l)
print('Sent ',repr(l))
l = f.read(1024)
f.close()
print('Done sending')
conn.send('Thank you for connecting')
conn.close()
@Berkays
Copy link

Berkays commented Jan 6, 2019

You don't need to use f.close() if you are using with keyword. 'With' automatically closes unmanaged resources.

@iranathan
Copy link

No, On line 20 he opens it without a with statement. Meaning you have to close it.

@the-black-viper
Copy link

On the client side he doesn't need to call f.close() but on the server side he needs it.

@Shani-1234
Copy link

thank you

@uzairr72
Copy link

how can we create a permanent connection between server and client?

@gaberau
Copy link

gaberau commented Oct 4, 2019

You can't create a permanent connection. Once either system undergoes a shutdown the connection will be broken. Why would you want a permanent connection? Just set the server to constantly listen for new connections and have the clients connect as needed.

@uzairr72
Copy link

uzairr72 commented Oct 4, 2019

I want to create a connection which look for new data from a folder and when new data comes send it to serve and should not close automatically. And it is a images data.

@gaberau
Copy link

gaberau commented Oct 16, 2019

A better method would be to have a script that watches that folder and opens connections to the server when new data enters that folder. That will remove the problem of having a constantly open connection and the server would only have to worry about listening for any new connections.

@SirErnestt
Copy link

i run the code but it is not working

@giefko
Copy link
Author

giefko commented Jul 5, 2020

@SirErnest what was the error or the output? Have you try to run it with Python 2.7 or higher? Are you using Windows, Linux which OS?

Provide me more infos and may i or somEbody else is able here to help you out. :)

@hightTest
Copy link

Check this out. File tranfer via socket. It is the easiest code https://youtu.be/SZyd7xGTBkw

@kimakuma
Copy link

Is this OS is linux?

@giefko
Copy link
Author

giefko commented Jan 25, 2021

@kimakuma no this is on Windows but i remember that is running also in Linux maybe with a few changes.
@hightTest nice thank you

The file transfer for large files is slow as hell of course if we can make it faster it could be good. Please check it guys

@hvn2706
Copy link

hvn2706 commented Mar 25, 2021

where does it save the file ?

@giefko
Copy link
Author

giefko commented Mar 25, 2021 via email

@ThyBlight
Copy link

Does this work on python 3.8? I can't quite seem to get it working (even when fixing the print statements).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment