Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. import socket
  2. import sys
  3. import io
  4. import os
  5.  
  6.  
  7. def printProgressBar (iteration, total, prefix = '', suffix = '', decimals = 1, length = 100, fill = '█'):
  8. """
  9. Call in a loop to create terminal progress bar
  10. @params:
  11. iteration - Required : current iteration (Int)
  12. total - Required : total iterations (Int)
  13. prefix - Optional : prefix string (Str)
  14. suffix - Optional : suffix string (Str)
  15. decimals - Optional : positive number of decimals in percent complete (Int)
  16. length - Optional : character length of bar (Int)
  17. fill - Optional : bar fill character (Str)
  18. """
  19. percent = ("{0:." + str(decimals) + "f}").format(100 * (iteration / float(total)))
  20. filledLength = int(length * iteration // total)
  21. bar = fill * filledLength + '-' * (length - filledLength)
  22. print('\r%s |%s| %s%% %s' % (prefix, bar, percent, suffix), end='\r')
  23. sys.stdout.flush()
  24. # Print New Line on Complete
  25. if iteration == total:
  26. print()
  27.  
  28. class Client:
  29. def __init__(self, host, port):
  30. self.host = host
  31. self.port = port
  32.  
  33. def send(self, name: str, stream: io.BytesIO, size: int):
  34. BUFFER_SIZE = 1024
  35.  
  36. with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
  37. s.connect((self.host, self.port))
  38. s.send(len(name).to_bytes(4, byteorder='little'))
  39. s.send(bytes(name, 'utf-8'))
  40.  
  41. sent_num = 0
  42. while True:
  43. read_bytes = stream.read(BUFFER_SIZE)
  44. if not read_bytes: break
  45. r = s.send(read_bytes)
  46. sent_num += r
  47. printProgressBar(sent_num, size, "Sending the file: ", "", 1, 100)
  48.  
  49.  
  50. if __name__ == "__main__":
  51. FILENAME = sys.argv[1]
  52. HOST = sys.argv[2] if len(sys.argv) > 2 else '3.15.44.172'
  53. PORT = sys.argv[3] if len(sys.argv) > 3 else 65432
  54.  
  55. with open(FILENAME, 'rb') as f:
  56. s = Client(HOST, PORT)
  57. s.send(FILENAME, f, os.stat(FILENAME).st_size)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement